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
This commit is contained in:
parent
f1bc87bf6d
commit
95645e155e
@ -832,13 +832,15 @@ var PageManager = GObject.registerClass({
|
|||||||
global.settings.connect('changed::app-picker-layout',
|
global.settings.connect('changed::app-picker-layout',
|
||||||
this._loadPages.bind(this));
|
this._loadPages.bind(this));
|
||||||
|
|
||||||
|
this._updatingPages = false;
|
||||||
this._loadPages();
|
this._loadPages();
|
||||||
}
|
}
|
||||||
|
|
||||||
_loadPages() {
|
_loadPages() {
|
||||||
const layout = global.settings.get_value('app-picker-layout');
|
const layout = global.settings.get_value('app-picker-layout');
|
||||||
this._pages = layout.recursiveUnpack();
|
this._pages = layout.recursiveUnpack();
|
||||||
this.emit('layout-changed');
|
if (!this._updatingPages)
|
||||||
|
this.emit('layout-changed');
|
||||||
}
|
}
|
||||||
|
|
||||||
getAppPosition(appId) {
|
getAppPosition(appId) {
|
||||||
@ -869,8 +871,12 @@ var PageManager = GObject.registerClass({
|
|||||||
packedPages.push(pageData);
|
packedPages.push(pageData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._updatingPages = true;
|
||||||
|
|
||||||
const variant = new GLib.Variant('aa{sv}', packedPages);
|
const variant = new GLib.Variant('aa{sv}', packedPages);
|
||||||
global.settings.set_value('app-picker-layout', variant);
|
global.settings.set_value('app-picker-layout', variant);
|
||||||
|
|
||||||
|
this._updatingPages = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
get pages() {
|
get pages() {
|
||||||
|
Loading…
Reference in New Issue
Block a user