From d19a80a7e7b7a19a723365bae85cc99ebd5bc25b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 13 Oct 2017 00:30:31 +0200 Subject: [PATCH 1/2] apps-menu: Don't override sort order Keep the order in which GMenu returns loaded apps, so users can reorder entries in Alacarte. https://bugzilla.gnome.org/show_bug.cgi?id=788939 --- extensions/apps-menu/extension.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js index e430140..dba31e7 100644 --- a/extensions/apps-menu/extension.js +++ b/extensions/apps-menu/extension.js @@ -745,9 +745,6 @@ const ApplicationsButton = new Lang.Class({ if (category_menu_id) { applist = this.applicationsByCategory[category_menu_id]; - applist.sort(function(a,b) { - return a.get_name().toLowerCase() > b.get_name().toLowerCase(); - }); } else { applist = new Array(); let favorites = global.settings.get_strv('favorite-apps'); -- 2.14.2 From a9d09c692cfb2944cdfd5b5c61140b3f9aa4b250 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 13 Oct 2017 01:43:20 +0200 Subject: [PATCH 2/2] apps-menu: Reload on tree changes Now that we respect the sort order defined in the .menu file, make sure to reload the menu on those changes as well, not just when the installed apps themselves change. https://bugzilla.gnome.org/show_bug.cgi?id=788939 --- extensions/apps-menu/extension.js | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js index dba31e7..600eda3 100644 --- a/extensions/apps-menu/extension.js +++ b/extensions/apps-menu/extension.js @@ -466,18 +466,25 @@ const ApplicationsButton = new Lang.Class({ }); }); + this._tree = new GMenu.Tree({ menu_basename: 'applications.menu' }); + this._treeChangedId = this._tree.connect('changed', + Lang.bind(this, this._onTreeChanged)); + this._applicationsButtons = new Map(); this.reloadFlag = false; this._createLayout(); this._display(); - this._installedChangedId = appSys.connect('installed-changed', Lang.bind(this, function() { - if (this.menu.isOpen) { - this._redisplay(); - this.mainBox.show(); - } else { - this.reloadFlag = true; - } - })); + this._installedChangedId = appSys.connect('installed-changed', + Lang.bind(this, this._onTreeChanged)); + }, + + _onTreeChanged: function() { + if (this.menu.isOpen) { + this._redisplay(); + this.mainBox.show(); + } else { + this.reloadFlag = true; + } }, get hotCorner() { @@ -495,6 +502,8 @@ const ApplicationsButton = new Lang.Class({ Main.overview.disconnect(this._showingId); Main.overview.disconnect(this._hidingId); appSys.disconnect(this._installedChangedId); + this._tree.disconnect(this._treeChangedId); + this._tree = null; Main.wm.setCustomKeybindingHandler('panel-main-menu', Shell.ActionMode.NORMAL | @@ -675,9 +684,8 @@ const ApplicationsButton = new Lang.Class({ //Load categories this.applicationsByCategory = {}; - let tree = new GMenu.Tree({ menu_basename: 'applications.menu' }); - tree.load_sync(); - let root = tree.get_root_directory(); + this._tree.load_sync(); + let root = this._tree.get_root_directory(); let categoryMenuItem = new CategoryMenuItem(this, null); this.categoriesBox.add_actor(categoryMenuItem.actor); let iter = root.iter(); -- 2.14.2