[gnome-shell] [baseIcon] Allow setting the icon size from code
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] [baseIcon] Allow setting the icon size from code
- Date: Thu, 23 Sep 2010 17:12:02 +0000 (UTC)
commit 01f4dc68b84ccf626d1088fd5f3db1081bcf952b
Author: Florian Müllner <fmuellner gnome org>
Date: Mon Aug 30 14:59:45 2010 +0200
[baseIcon] Allow setting the icon size from code
The current design features a sidebar where the icon size shrinks
automatically to fit more items. Add a setSizeManually parameter
to BaseIcon, which disables sizes read from CSS and allows to use
BaseIcon.setIconSize() to support this.
https://bugzilla.gnome.org/show_bug.cgi?id=625887
js/ui/iconGrid.js | 41 ++++++++++++++++++++++++++++-------------
1 files changed, 28 insertions(+), 13 deletions(-)
---
diff --git a/js/ui/iconGrid.js b/js/ui/iconGrid.js
index e728caf..b2b0193 100644
--- a/js/ui/iconGrid.js
+++ b/js/ui/iconGrid.js
@@ -15,7 +15,9 @@ function BaseIcon(label, createIcon) {
}
BaseIcon.prototype = {
- _init : function(label, createIcon) {
+ _init : function(label, params) {
+ params = Params.parse(params, { createIcon: null,
+ setSizeManually: false });
this.actor = new St.Bin({ style_class: 'overview-icon',
x_fill: true,
y_fill: true });
@@ -35,8 +37,9 @@ BaseIcon.prototype = {
this._name = new St.Label({ text: label });
box.add_actor(this._name);
- if (createIcon)
- this.createIcon = createIcon;
+ if (params.createIcon)
+ this.createIcon = params.createIcon;
+ this._setSizeManually = params.setSizeManually;
this.icon = this.createIcon(this.iconSize);
this._iconBin.set_child(this.icon);
@@ -48,17 +51,29 @@ BaseIcon.prototype = {
throw new Error('no implementation of createIcon in ' + this);
},
+ setIconSize: function(size) {
+ if (!this._setSizeManually)
+ throw new Error('setSizeManually has to be set to use setIconsize');
+
+ this._setIconSize(size);
+ },
+
+ _setIconSize: function(size) {
+ if (size == this.iconSize)
+ return;
+
+ this.icon.destroy();
+ this.iconSize = size;
+ this.icon = this.createIcon(this.iconSize);
+ this._iconBin.child = this.icon;
+ },
+
_onStyleChanged: function() {
- let node = this.actor.get_theme_node();
- let [success, len] = node.get_length('icon-size', false);
- if (success) {
- if (len == this.iconSize)
- return;
-
- this.icon.destroy();
- this.iconSize = len;
- this.icon = this.createIcon(this.iconSize);
- this._iconBin.set_child(this.icon);
+ if (!this._setSizeManually) {
+ let node = this.actor.get_theme_node();
+ let [success, len] = node.get_length('icon-size', false);
+ if (success)
+ this._setIconSize(len);
}
}
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]