From a9ad91c831d6c25d5de38c7281415c0740aefdcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 24 Jul 2018 16:40:03 +0200 Subject: [PATCH] system: Pick up Settings name and icon from app The settings action button in the system menu simply launches gnome-control-center, so we want its icon (and accessible name) to always match the app. So instead of keeping the button in-sync with Settings, just look up that information from the app itself. https://gitlab.gnome.org/GNOME/gnome-shell/issues/433 --- js/ui/status/system.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/js/ui/status/system.js b/js/ui/status/system.js index 777e95956..81b985c1f 100644 --- a/js/ui/status/system.js +++ b/js/ui/status/system.js @@ -261,8 +261,19 @@ var Indicator = new Lang.Class({ item = new PopupMenu.PopupBaseMenuItem({ reactive: false, can_focus: false }); - this._settingsAction = this._createActionButton('preferences-system', _("Settings")); - this._settingsAction.connect('clicked', () => { this._onSettingsClicked(); }); + let app = this._settingsApp = Shell.AppSystem.get_default().lookup_app( + 'gnome-control-center.desktop' + ); + if (app) { + let [icon, name] = [app.app_info.get_icon().names[0], + app.get_name()]; + this._settingsAction = this._createActionButton(icon, name); + this._settingsAction.connect('clicked', + this._onSettingsClicked().bind(this)); + } else { + log('Missing required core component Settings, expect troubleā€¦'); + this._settingsAction = new St.Widget(); + } item.actor.add(this._settingsAction, { expand: true, x_fill: false }); this._orientationLockAction = this._createActionButton('', _("Orientation Lock")); @@ -330,8 +341,7 @@ var Indicator = new Lang.Class({ _onSettingsClicked() { this.menu.itemActivated(); - let app = Shell.AppSystem.get_default().lookup_app('gnome-control-center.desktop'); Main.overview.hide(); - app.activate(); + this._settingsApp.activate(); } });