[gnome-shell] Adjust tray spacing to cope with many icons
- From: Colin Walters <walters src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-shell] Adjust tray spacing to cope with many icons
- Date: Tue, 4 Aug 2009 00:42:40 +0000 (UTC)
commit 61b28c5c7d0cff4da75b764f6963378fbd971519
Author: Colin Walters <walters verbum org>
Date: Sat Aug 1 22:11:37 2009 -0400
Adjust tray spacing to cope with many icons
This patch attempts to adjust if we have many tray icons; currently
the simple algorithm is to drop down to a spacing of 8 if we have
more than 6. In the future we should fix the panel layout so that
the clock moves to the side.
js/ui/panel.js | 24 ++++++++++++++++++++----
1 files changed, 20 insertions(+), 4 deletions(-)
---
diff --git a/js/ui/panel.js b/js/ui/panel.js
index ec6f00b..6c432f6 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -34,7 +34,9 @@ PRESSED_BUTTON_BACKGROUND_COLOR.from_pixel(0x324c6ffa);
const DEFAULT_FONT = 'Sans 16px';
const TRAY_PADDING = 0;
+// See comments around _recomputeTraySize
const TRAY_SPACING = 14;
+const TRAY_SPACING_MIN = 8;
// Used for the tray icon container with gtk pre-2.16, which doesn't
// fully support tray icon transparency
@@ -113,6 +115,7 @@ Panel.prototype = {
height: TRAY_HEIGHT,
padding: TRAY_PADDING,
spacing: TRAY_SPACING });
+ this._trayBox = trayBox;
// gtk+ < 2.16 doesn't have fully-working icon transparency,
// so we want trayBox to be opaque in that case (the icons
@@ -129,19 +132,21 @@ Panel.prototype = {
this._traymanager = new Shell.TrayManager({ bg_color: TRAY_BACKGROUND_COLOR });
this._traymanager.connect('tray-icon-added',
- function(o, icon) {
+ Lang.bind(this, function(o, icon) {
trayBox.append(icon, Big.BoxPackFlags.NONE);
// Make sure the trayBox is shown.
trayBox.show();
- });
+ this._recomputeTraySize();
+ }));
this._traymanager.connect('tray-icon-removed',
- function(o, icon) {
+ Lang.bind(this, function(o, icon) {
trayBox.remove_actor(icon);
if (trayBox.get_children().length == 0)
trayBox.hide();
- });
+ this._recomputeTraySize();
+ }));
this._traymanager.manage_stage(global.stage);
// TODO: decide what to do with the rest of the panel in the overlay mode (make it fade-out, become non-reactive, etc.)
@@ -174,6 +179,17 @@ Panel.prototype = {
});
},
+ // By default, tray icons have a spacing of TRAY_SPACING. However this
+ // starts to fail if we have too many as can sadly happen; just jump down
+ // to a spacing of 8 if we're over 6.
+ // http://bugzilla.gnome.org/show_bug.cgi?id=590495
+ _recomputeTraySize: function () {
+ if (this._trayBox.get_children().length > 6)
+ this._trayBox.spacing = TRAY_SPACING_MIN;
+ else
+ this._trayBox.spacing = TRAY_SPACING;
+ },
+
_updateClock: function() {
let displayDate = new Date();
let msecRemaining = 60000 - (1000 * displayDate.getSeconds() +
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]