[gnome-shell/gbsneto/reload-on-pages-changed: 2/2] appDisplay: Only emit layout-changed when not updating pages




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]