[gnome-shell] [AppIcon] redo constructor to take a params object, add "size" param
- From: Dan Winship <danw src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-shell] [AppIcon] redo constructor to take a params object, add "size" param
- Date: Tue, 6 Oct 2009 13:54:22 +0000 (UTC)
commit 45dd342cc0241af64bbbf7b6c62a9f4640071a75
Author: Dan Winship <danw gnome org>
Date: Mon Oct 5 19:33:38 2009 -0400
[AppIcon] redo constructor to take a params object, add "size" param
Add a "size" parameter to allow changing the AppIcon size, and then
simplify the constructor by taking an object with parameters like
gobject-introspection constructors do, rather than taking a large
number of miscellaneous arguments.
https://bugzilla.gnome.org/show_bug.cgi?id=597498
js/ui/altTab.js | 3 ++-
js/ui/appDisplay.js | 4 +++-
js/ui/appIcon.js | 31 ++++++++++++++++++-------------
3 files changed, 23 insertions(+), 15 deletions(-)
---
diff --git a/js/ui/altTab.js b/js/ui/altTab.js
index d176c23..532c20a 100644
--- a/js/ui/altTab.js
+++ b/js/ui/altTab.js
@@ -109,7 +109,8 @@ AltTabPopup.prototype = {
let workspaceIcons = [];
let otherIcons = [];
for (let i = 0; i < apps.length; i++) {
- let appIcon = new AppIcon.AppIcon(apps[i], AppIcon.MenuType.BELOW, false);
+ let appIcon = new AppIcon.AppIcon({ appInfo: apps[i],
+ menuType: AppIcon.MenuType.BELOW });
if (this._hasWindowsOnWorkspace(appIcon, activeWorkspace))
workspaceIcons.push(appIcon);
else
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 7f2b812..3e9a3bd 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -452,7 +452,9 @@ BaseWellItem.prototype = {
__proto__: AppIcon.AppIcon.prototype,
_init: function(appInfo, isFavorite) {
- AppIcon.AppIcon.prototype._init.call(this, appInfo, AppIcon.MenuType.ON_RIGHT, true);
+ AppIcon.AppIcon.prototype._init.call(this, { appInfo: appInfo,
+ menuType: AppIcon.MenuType.ON_RIGHT,
+ glow: true });
this.isFavorite = isFavorite;
diff --git a/js/ui/appIcon.js b/js/ui/appIcon.js
index 045a281..bc9001f 100644
--- a/js/ui/appIcon.js
+++ b/js/ui/appIcon.js
@@ -20,7 +20,7 @@ GLOW_COLOR.from_pixel(0x4f6ba4ff);
const GLOW_PADDING_HORIZONTAL = 3;
const GLOW_PADDING_VERTICAL = 3;
-const APPICON_ICON_SIZE = 48;
+const APPICON_DEFAULT_ICON_SIZE = 48;
const APPICON_PADDING = 1;
const APPICON_BORDER_WIDTH = 1;
@@ -49,14 +49,19 @@ TRANSPARENT_COLOR.from_pixel(0x00000000);
const MenuType = { NONE: 0, ON_RIGHT: 1, BELOW: 2 };
-function AppIcon(appInfo, menuType) {
- this._init(appInfo, menuType || MenuType.NONE);
+function AppIcon(params) {
+ this._init(params);
}
AppIcon.prototype = {
- _init : function(appInfo, menuType, showGlow) {
- this.appInfo = appInfo;
- this._menuType = menuType;
+ _init : function(params) {
+ this.appInfo = params.appInfo;
+ if (!this.appInfo)
+ throw new Error('AppIcon constructor requires "appInfo" param');
+
+ this._menuType = ('menuType' in params) ? params.menuType : MenuType.NONE;
+ this._iconSize = ('size' in params) ? params.size : APPICON_DEFAULT_ICON_SIZE;
+ let showGlow = ('glow' in params) ? params.glow : false;
this.actor = new Shell.ButtonBox({ orientation: Big.BoxOrientation.VERTICAL,
border: APPICON_BORDER_WIDTH,
@@ -66,13 +71,13 @@ AppIcon.prototype = {
this.actor._delegate = this;
this.highlight_border_color = APPICON_DEFAULT_BORDER_COLOR;
- this.windows = Shell.AppMonitor.get_default().get_windows_for_app(appInfo.get_id());
+ this.windows = Shell.AppMonitor.get_default().get_windows_for_app(this.appInfo.get_id());
for (let i = 0; i < this.windows.length; i++) {
this.windows[i].connect('notify::user-time', Lang.bind(this, this._resortWindows));
}
this._resortWindows();
- if (menuType != MenuType.NONE) {
+ if (this._menuType != MenuType.NONE) {
this.actor.connect('button-press-event', Lang.bind(this, this._updateMenuOnButtonPress));
this.actor.connect('notify::hover', Lang.bind(this, this._updateMenuOnHoverChanged));
this.actor.connect('activate', Lang.bind(this, this._updateMenuOnActivate));
@@ -84,9 +89,9 @@ AppIcon.prototype = {
let iconBox = new Big.Box({ orientation: Big.BoxOrientation.VERTICAL,
x_align: Big.BoxAlignment.CENTER,
y_align: Big.BoxAlignment.CENTER,
- width: APPICON_ICON_SIZE,
- height: APPICON_ICON_SIZE });
- this.icon = appInfo.create_icon_texture(APPICON_ICON_SIZE);
+ width: this._iconSize,
+ height: this._iconSize });
+ this.icon = this.appInfo.create_icon_texture(this._iconSize);
iconBox.append(this.icon, Big.BoxPackFlags.NONE);
this.actor.append(iconBox, Big.BoxPackFlags.EXPAND);
@@ -101,7 +106,7 @@ AppIcon.prototype = {
font_name: "Sans 12px",
line_alignment: Pango.Alignment.CENTER,
ellipsize: Pango.EllipsizeMode.END,
- text: appInfo.get_name() });
+ text: this.appInfo.get_name() });
nameBox.add_actor(this._name);
if (showGlow) {
this._glowBox = new Big.Box({ orientation: Big.BoxOrientation.HORIZONTAL });
@@ -189,7 +194,7 @@ AppIcon.prototype = {
// a subclass of it draggable, you can use this method to create
// a drag actor
createDragActor: function() {
- return this.appInfo.create_icon_texture(APPICON_ICON_SIZE);
+ return this.appInfo.create_icon_texture(this._iconSize);
},
setHighlight: function(highlight) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]