From 9fbd79316a4cb3e432aa56d88b24c992ef2f8699 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 25 Aug 2011 11:46:25 -0400 Subject: [PATCH] panel: merge statusBox into rightBox Simplify the layout in rightBox by getting rid of statusBox, and just putting everything into rightBox directly. Simplify the handling of the user menu by adding it like it was a status icon rather than special-casing it. Rename the "tray_icon" variables to "status_area" to reflect this better. https://bugzilla.gnome.org/show_bug.cgi?id=651299 --- data/theme/gnome-shell.css | 10 +++---- js/ui/panel.js | 55 +++++++++++++++----------------------- js/ui/panelMenu.js | 1 + 3 files changed, 28 insertions(+), 38 deletions(-) diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index c61bbf6e7..f61fe6eb1 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -276,12 +276,12 @@ StTooltip StLabel { background-color: black; border-image: url("panel-border.svg") 1; font-size: 10.5pt; + font-weight: bold; height: 1.86em; } -#panelLeft, #panelCenter, #panelRight { +#panelLeft, #panelCenter { spacing: 4px; - font-weight: bold; } #panelLeft:ltr { @@ -355,9 +355,9 @@ StTooltip StLabel { text-shadow: black 0px 2px 2px; } -#statusTray > .panel-button:active, -#statusTray > .panel-button:checked, -#statusTray > .panel-button:focus { +.panel-status-button:active, +.panel-status-button:checked, +.panel-status-button:focus { background-image: url("panel-button-highlight-narrow.svg"); } diff --git a/js/ui/panel.js b/js/ui/panel.js index abdcf801e..1d2dc0f38 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -16,7 +16,6 @@ const Layout = imports.ui.layout; const Overview = imports.ui.overview; const PopupMenu = imports.ui.popupMenu; const PanelMenu = imports.ui.panelMenu; -const UserMenu = imports.ui.userMenu; const DateMenu = imports.ui.dateMenu; const Main = imports.ui.main; const Tweener = imports.ui.tweener; @@ -28,25 +27,26 @@ const BUTTON_DND_ACTIVATION_TIMEOUT = 250; const ANIMATED_ICON_UPDATE_TIMEOUT = 100; const SPINNER_ANIMATION_TIME = 0.2; -const STANDARD_TRAY_ICON_ORDER = ['a11y', 'keyboard', 'volume', 'bluetooth', 'network', 'battery']; -const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = { +const STANDARD_STATUS_AREA_ORDER = ['a11y', 'keyboard', 'volume', 'bluetooth', 'network', 'battery', 'userMenu']; +const STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION = { 'a11y': imports.ui.status.accessibility.ATIndicator, 'volume': imports.ui.status.volume.Indicator, 'battery': imports.ui.status.power.Indicator, - 'keyboard': imports.ui.status.keyboard.XKBIndicator + 'keyboard': imports.ui.status.keyboard.XKBIndicator, + 'userMenu': imports.ui.userMenu.UserMenuButton }; if (Config.HAVE_BLUETOOTH) - STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['bluetooth'] = imports.ui.status.bluetooth.Indicator; + STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['bluetooth'] = imports.ui.status.bluetooth.Indicator; try { - STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['network'] = imports.ui.status.network.NMApplet; + STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['network'] = imports.ui.status.network.NMApplet; } catch(e) { log('NMApplet is not supported. It is possible that your NetworkManager version is too old'); } -const GDM_TRAY_ICON_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'battery']; -const GDM_TRAY_ICON_SHELL_IMPLEMENTATION = { +const GDM_STATUS_AREA_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'battery']; +const GDM_STATUS_AREA_SHELL_IMPLEMENTATION = { 'a11y': imports.ui.status.accessibility.ATIndicator, 'volume': imports.ui.status.volume.Indicator, 'battery': imports.ui.status.power.Indicator, @@ -901,14 +901,6 @@ Panel.prototype = { this.actor.remove_style_class_name('in-overview'); })); - if (global.session_type == Shell.SessionType.GDM) { - this._tray_icon_order = GDM_TRAY_ICON_ORDER; - this._tray_icon_shell_implementation = GDM_TRAY_ICON_SHELL_IMPLEMENTATION; - } else { - this._tray_icon_order = STANDARD_TRAY_ICON_ORDER; - this._tray_icon_shell_implementation = STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION; - } - this._menus = new PopupMenu.PopupMenuManager(this); this._leftBox = new St.BoxLayout({ name: 'panelLeft' }); @@ -959,14 +951,12 @@ Panel.prototype = { this._menus.addMenu(this._dateMenu.menu); /* right */ - - this._statusBox = new St.BoxLayout({ name: 'statusTray' }); - this._rightBox.add(this._statusBox); - - if (global.session_type == Shell.SessionType.USER) { - this._userMenu = new UserMenu.UserMenuButton(); - this._userMenu.actor.name = 'panelStatus'; - this._rightBox.add(this._userMenu.actor); + if (global.session_type == Shell.SessionType.GDM) { + this._status_area_order = GDM_STATUS_AREA_ORDER; + this._status_area_shell_implementation = GDM_STATUS_AREA_SHELL_IMPLEMENTATION; + } else { + this._status_area_order = STANDARD_STATUS_AREA_ORDER; + this._status_area_shell_implementation = STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION; } Main.statusIconDispatcher.connect('status-icon-added', Lang.bind(this, this._onTrayIconAdded)); @@ -1052,9 +1042,9 @@ Panel.prototype = { }, startStatusArea: function() { - for (let i = 0; i < this._tray_icon_order.length; i++) { - let role = this._tray_icon_order[i]; - let constructor = this._tray_icon_shell_implementation[role]; + for (let i = 0; i < this._status_area_order.length; i++) { + let role = this._status_area_order[i]; + let constructor = this._status_area_shell_implementation[role]; if (!constructor) { // This icon is not implemented (this is a bug) continue; @@ -1071,20 +1061,19 @@ Panel.prototype = { }, _insertStatusItem: function(actor, position) { - let children = this._statusBox.get_children(); + let children = this._rightBox.get_children(); let i; for (i = children.length - 1; i >= 0; i--) { let rolePosition = children[i]._rolePosition; if (position > rolePosition) { - this._statusBox.insert_actor(actor, i + 1); + this._rightBox.insert_actor(actor, i + 1); break; } } if (i == -1) { // If we didn't find a position, we must be first - this._statusBox.insert_actor(actor, 0); + this._rightBox.insert_actor(actor, 0); } - actor._rolePosition = position; }, @@ -1110,7 +1099,7 @@ Panel.prototype = { }, _onTrayIconAdded: function(o, icon, role) { - if (this._tray_icon_shell_implementation[role]) { + if (this._status_area_shell_implementation[role]) { // This icon is legacy, and replaced by a Shell version // Hide it return; @@ -1120,7 +1109,7 @@ Panel.prototype = { let bin = new St.Bin({ style_class: 'panel-button' }); bin.child = icon; - this._insertStatusItem(bin, this._tray_icon_order.indexOf(role)); + this._insertStatusItem(bin, this._status_area_order.indexOf(role)); }, _onTrayIconRemoved: function(o, icon) { diff --git a/js/ui/panelMenu.js b/js/ui/panelMenu.js index 151f35afa..582ac2edd 100644 --- a/js/ui/panelMenu.js +++ b/js/ui/panelMenu.js @@ -113,6 +113,7 @@ SystemStatusButton.prototype = { icon_type: St.IconType.SYMBOLIC, style_class: 'system-status-icon' }); this.actor.set_child(this._iconActor); + this.actor.add_style_class_name('panel-status-button'); this.setTooltip(tooltipText); },