appDisplay: Connect to hidden signal after content initialization
When the overview is hidden just after starting GNOME Shell the app grid is not populated yet. Thus, this._grid.nPages is 0. When the overview is about to be hidden, we call goToPage(0) on the AppGrid. This results in pageNumber being clamped to -1 and leads to the following exception: ``` JS ERROR: Exception in callback for signal: hidden: Error: Page -2 does not exist at IconGrid getItemsAtPage@resource:///org/gnome/shell/ui/iconGrid.js:1383:19 _translatePreviousPageIcons@resource:///org/gnome/shell/ui/appDisplay.js:323:34 _syncPageIndicators@resource:///org/gnome/shell/ui/appDisplay.js:396:14 goToPage@resource:///org/gnome/shell/ui/appDisplay.js:445:14 goToPage@resource:///org/gnome/shell/ui/appDisplay.js:1237:29 goToPage@resource:///org/gnome/shell/ui/appDisplay.js:1584:15 _init/<@resource:///org/gnome/shell/ui/appDisplay.js:1328:52 _emit@resource:///org/gnome/gjs/modules/core/_signals.js:89:42 _hideDone@resource:///org/gnome/shell/ui/overview.js:589:18 _animateNotVisible/<@resource:///org/gnome/shell/ui/overview.js:566:55 onStopped@resource:///org/gnome/shell/ui/overviewControls.js:753:21 _makeEaseCallback/<@resource:///org/gnome/shell/ui/environment.js:150:22 _easeActorProperty/<@resource:///org/gnome/shell/ui/environment.js:316:60 ``` Connect to the overview hidden signal only after initializing the AppDisplay content, so that goToPage(0) is not called when there is no page yet. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5837 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2536>
This commit is contained in:
parent
bcafa512e3
commit
2326721561
@ -1324,9 +1324,12 @@ class AppDisplay extends BaseAppView {
|
||||
|
||||
this._placeholder = null;
|
||||
|
||||
Main.overview.connect('hidden', () => this.goToPage(0));
|
||||
|
||||
this._redisplayWorkId = Main.initializeDeferredWork(this, this._redisplay.bind(this));
|
||||
this._overviewHiddenId = 0;
|
||||
this._redisplayWorkId = Main.initializeDeferredWork(this, () => {
|
||||
this._redisplay();
|
||||
if (this._overviewHiddenId === 0)
|
||||
this._overviewHiddenId = Main.overview.connect('hidden', () => this.goToPage(0));
|
||||
});
|
||||
|
||||
Shell.AppSystem.get_default().connect('installed-changed', () => {
|
||||
Main.queueDeferredWork(this._redisplayWorkId);
|
||||
|
Loading…
Reference in New Issue
Block a user