[gnome-shell/gbsneto/reload-on-pages-changed: 2/2] appDisplay: Only emit layout-changed when not updating pages
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/gbsneto/reload-on-pages-changed: 2/2] appDisplay: Only emit layout-changed when not updating pages
- Date: Tue, 1 Sep 2020 18:51:46 +0000 (UTC)
commit 8587167ac8452821fa20f8481fbeabe2030be726
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Tue Sep 1 15:41:44 2020 -0300
appDisplay: Only emit layout-changed when not updating pages
It is wasteful to emit layout-changed when updating pages, because
the caller (AppDisplay) already has an updated state by the time
this is called.
Only emit 'layout-changed' if the GSettings notification doesn't
come from AppDisplay updating the pages.
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1428
js/ui/appDisplay.js | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 99b772a524..66f06462c1 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -832,13 +832,15 @@ var PageManager = GObject.registerClass({
global.settings.connect('changed::app-picker-layout',
this._loadPages.bind(this));
+ this._updatingPages = false;
this._loadPages();
}
_loadPages() {
const layout = global.settings.get_value('app-picker-layout');
this._pages = layout.recursiveUnpack();
- this.emit('layout-changed');
+ if (!this._updatingPages)
+ this.emit('layout-changed');
}
getAppPosition(appId) {
@@ -869,8 +871,12 @@ var PageManager = GObject.registerClass({
packedPages.push(pageData);
}
+ this._updatingPages = true;
+
const variant = new GLib.Variant('aa{sv}', packedPages);
global.settings.set_value('app-picker-layout', variant);
+
+ this._updatingPages = false;
}
get pages() {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]