[gnome-shell] Update running app indicator to match latest mockup
- From: Florian Müllner <fmuellner src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-shell] Update running app indicator to match latest mockup
- Date: Tue, 12 Jan 2010 15:05:11 +0000 (UTC)
commit 33b3d05039a049ede467d11c17cde1ed2db76485
Author: Florian Müllner <fmuellner src gnome org>
Date: Thu Jan 7 06:40:21 2010 +0100
Update running app indicator to match latest mockup
https://bugzilla.gnome.org/show_bug.cgi?id=606257
data/Makefile.am | 1 -
data/app-well-glow.png | Bin 3724 -> 0 bytes
data/theme/gnome-shell.css | 23 ++++----
js/ui/appDisplay.js | 121 +++++++++++---------------------------------
4 files changed, 41 insertions(+), 104 deletions(-)
---
diff --git a/data/Makefile.am b/data/Makefile.am
index eef11bd..f0ca34e 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -15,7 +15,6 @@ gnome-shell.desktop: gnome-shell.desktop.in
imagesdir = $(pkgdatadir)/images
dist_images_DATA = \
add-workspace.svg \
- app-well-glow.png \
close-black.svg \
magnifier.svg \
remove-workspace.svg
diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
index b8c3881..71a5084 100644
--- a/data/theme/gnome-shell.css
+++ b/data/theme/gnome-shell.css
@@ -296,21 +296,27 @@ StTooltip {
/* Apps */
#dashAppWell {
- spacing: 2px;
- -shell-grid-item-size: 74px;
+ spacing: 6px;
+ -shell-grid-item-size: 70px;
}
.app-well-app {
border: 1px solid #080808;
- border-radius: 2px;
+ border-radius: 4px;
padding: 2px;
- width: 74px;
- height: 74px;
+ width: 70px;
+ height: 70px;
font-size: 10px;
}
+.app-well-app.running {
+ background-gradient-direction: vertical;
+ background-gradient-start: #3c3c3c;
+ background-gradient-end: #000000;
+}
+
.app-well-app:hover {
- border: 1px solid #202020;
+ border: 1px solid #666666;
}
.app-well-app:active {
@@ -318,11 +324,6 @@ StTooltip {
border: 1px solid #5f5f5f;
}
-.app-well-app-glow {
- -shell-glow-extend-vertical: 3px;
- -shell-glow-shrink-horizontal: 3px;
-}
-
.app-well-menu {
border: 1px solid #5f5f5f;
border-radius: 4px;
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index fbe096a..26e43c1 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -299,15 +299,10 @@ AppIcon.prototype = {
_init : function(app) {
this.app = app;
- this._glowExtendVertical = 0;
- this._glowShrinkHorizontal = 0;
-
this.actor = new St.Bin({ style_class: 'app-icon',
x_fill: true,
y_fill: true });
this.actor._delegate = this;
- this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
- this._workId = Main.initializeDeferredWork(this.actor, Lang.bind(this, this._rerenderGlow));
let box = new St.BoxLayout({ vertical: true });
this.actor.set_child(box);
@@ -316,95 +311,9 @@ AppIcon.prototype = {
box.add(this.icon, { expand: true, x_fill: false, y_fill: false });
- let nameBox = new Shell.GenericContainer();
- nameBox.connect('get-preferred-width', Lang.bind(this, this._nameBoxGetPreferredWidth));
- nameBox.connect('get-preferred-height', Lang.bind(this, this._nameBoxGetPreferredHeight));
- nameBox.connect('allocate', Lang.bind(this, this._nameBoxAllocate));
- this._nameBox = nameBox;
-
this._name = new St.Label({ text: this.app.get_name() });
this._name.clutter_text.line_alignment = Pango.Alignment.CENTER;
- nameBox.add_actor(this._name);
- this._glowBox = new St.BoxLayout({ style_class: 'app-well-app-glow' });
- this._glowBox.connect('style-changed', Lang.bind(this, this._onStyleChanged));
- this._nameBox.add_actor(this._glowBox);
- this._glowBox.lower(this._name);
- this._appWindowChangedId = this.app.connect('windows-changed', Lang.bind(this, this._queueRerenderGlow));
-
- box.add(nameBox);
- },
-
- _nameBoxGetPreferredWidth: function (nameBox, forHeight, alloc) {
- let [min, natural] = this._name.get_preferred_width(forHeight);
- alloc.min_size = min;
- alloc.natural_size = natural;
- },
-
- _nameBoxGetPreferredHeight: function (nameBox, forWidth, alloc) {
- let [min, natural] = this._name.get_preferred_height(forWidth);
- alloc.min_size = min + this._glowExtendVertical * 2;
- alloc.natural_size = natural + this._glowExtendVertical * 2;
- },
-
- _nameBoxAllocate: function (nameBox, box, flags) {
- let childBox = new Clutter.ActorBox();
- let [minWidth, naturalWidth] = this._name.get_preferred_width(-1);
- let [minHeight, naturalHeight] = this._name.get_preferred_height(-1);
- let availWidth = box.x2 - box.x1;
- let availHeight = box.y2 - box.y1;
- let targetWidth = availWidth;
- let xPadding = 0;
- if (naturalWidth < availWidth) {
- xPadding = Math.floor((availWidth - naturalWidth) / 2);
- }
- childBox.x1 = xPadding;
- childBox.x2 = availWidth - xPadding;
- childBox.y1 = this._glowExtendVertical;
- childBox.y2 = availHeight - this._glowExtendVertical;
- this._name.allocate(childBox, flags);
-
- // Now the glow
- let glowPaddingHoriz = Math.max(0, xPadding - this._glowShrinkHorizontal);
- glowPaddingHoriz = Math.max(this._glowShrinkHorizontal, glowPaddingHoriz);
- childBox.x1 = glowPaddingHoriz;
- childBox.x2 = availWidth - glowPaddingHoriz;
- childBox.y1 = 0;
- childBox.y2 = availHeight;
- this._glowBox.allocate(childBox, flags);
- },
-
- _onDestroy: function() {
- if (this._appWindowChangedId > 0)
- this.app.disconnect(this._appWindowChangedId);
- },
-
- _queueRerenderGlow: function() {
- Main.queueDeferredWork(this._workId);
- },
-
- _onStyleChanged: function() {
- let themeNode = this._glowBox.get_theme_node();
-
- let success, len;
- [success, len] = themeNode.get_length('-shell-glow-extend-vertical', false);
- if (success)
- this._glowExtendVertical = len;
- [success, len] = themeNode.get_length('-shell-glow-shrink-horizontal', false);
- if (success)
- this._glowShrinkHorizontal = len;
- this.actor.queue_relayout();
- },
-
- _rerenderGlow: function() {
- this._glowBox.destroy_children();
- let glowPath = GLib.filename_to_uri(global.imagedir + 'app-well-glow.png', '');
- let windows = this.app.get_windows();
- for (let i = 0; i < windows.length && i < 3; i++) {
- let glow = Shell.TextureCache.get_default().load_uri_sync(Shell.TextureCachePolicy.FOREVER,
- glowPath, -1, -1);
- glow.keep_aspect_ratio = false;
- this._glowBox.add(glow);
- }
+ box.add_actor(this._name);
}
}
@@ -415,6 +324,7 @@ function AppWellIcon(app) {
AppWellIcon.prototype = {
_init : function(app) {
this.app = app;
+ this._running = false;
this.actor = new St.Clickable({ style_class: 'app-well-app',
reactive: true,
x_fill: true,
@@ -433,6 +343,33 @@ AppWellIcon.prototype = {
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
this.actor.connect('notify::hover', Lang.bind(this, this._onHoverChange));
+ this.actor.connect('show', Lang.bind(this, this._onShow));
+ this.actor.connect('hide', Lang.bind(this, this._onHideDestroy));
+ this.actor.connect('destroy', Lang.bind(this, this._onHideDestroy));
+
+ this._appWindowChangedId = 0;
+ },
+
+ _onShow: function() {
+ this._appWindowChangedId = this.app.connect('windows-changed',
+ Lang.bind(this,
+ this._updateStyleClass));
+ this._updateStyleClass();
+ },
+
+ _onHideDestroy: function() {
+ if (this._appWindowChangedId > 0)
+ this.app.disconnect(this._appWindowChangedId);
+ },
+
+ _updateStyleClass: function() {
+ let windows = this.app.get_windows();
+ let running = windows.length > 0;
+ if (running == this._running)
+ return;
+ this._running = running;
+ this.actor.style_class = this._running ? "app-well-app running"
+ : "app-well-app";
},
_onButtonPress: function(actor, event) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]