gnome-shell/js/ui
Sebastian Keller 4bbf6d497d windowPreview: Ignore leave events after being destroyed
When a WindowPreview is being destroyed, the class default handler for
the `destroy` signal is responsible for destroying its child actors.
This happens after the emission of the `destroy` signal, i.e. after
`WindowPreview::_onDestroy()` has been run.

The destruction of the WindowPreview's child actors now triggers a
re-pick, but due to WindowPreview having already being marked as
`CLUTTER_IN_DESTRUCTION`, it will not be picked, resulting in a `leave`
event if the cursor was on top of the WindowPreview at the time
`destroy()` was called on it.

So this leads to `WindowPreview::vfunc_leave_event()` being run after
`WindowPreview::_onDestroy()`, which means the idle started by the leave
event handler will not be removed and ends up accessing actors after
they have already been destroyed.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5512
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6065
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2738>
2023-04-18 19:44:20 +00:00
..
components general: Rename "application" to "app" 2023-02-07 14:46:28 +00:00
status powerProfiles: Rename "Power Profiles" to "Power Mode" 2023-04-04 22:09:13 +00:00
accessDialog.js accessDialog: Don't add an empty body 2023-01-17 13:51:54 +00:00
altTab.js altTab: Always include label in thumbnail 2022-10-18 18:04:57 +00:00
animation.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
appDisplay.js appDisplay: Avoid using an undefined _swipeTracker 2023-03-19 13:12:22 +00:00
appFavorites.js appFavorite: Add missing .desktop extension for simplescan 2023-03-29 21:51:04 +00:00
appMenu.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
audioDeviceSelection.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
background.js Update to drop GTK3 dependency 2023-03-03 20:38:03 +00:00
backgroundMenu.js backgroundMenu: Drop grab-op-begin signal connection 2023-01-30 12:19:22 +00:00
barLevel.js cleanup: Define GObject accessors in camelCase 2021-02-03 20:19:29 +01:00
boxpointer.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
calendar.js calendar: Unbind settings when destroying 2022-11-25 22:09:37 +01:00
checkBox.js checkbox: Improve accessibility of check boxes for Orca users 2020-03-29 12:56:33 +00:00
closeDialog.js general: Rename "application" to "app" 2023-02-07 14:46:28 +00:00
ctrlAltTab.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
dash.js dash: Do not destroy a dash label twice 2023-04-17 20:22:12 +00:00
dateMenu.js dateMenu: Use desktop action to open Evolution calendar 2023-02-12 20:14:02 +00:00
dialog.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
dnd.js dnd: Remove buttonDown private property 2023-02-24 15:32:06 +00:00
edgeDragAction.js edgeDragAction: Drop grab-op-begin signal connection 2023-01-30 12:19:22 +00:00
endSessionDialog.js endSessionDialog: Catch async errors 2023-03-19 19:54:45 +00:00
environment.js environment: Disallow all GDK backends 2023-03-06 16:31:53 +01:00
extensionDownloader.js extensionDownloader: Check schemadir existence and type 2023-03-27 21:12:59 +00:00
extensionSystem.js extensionSystem: Fix extension reloading 2023-03-19 13:26:30 +00:00
focusCaretTracker.js Adopt EventEmitter class instead of injecting Signal methods 2022-07-04 18:30:49 -04:00
grabHelper.js Require both mouse and keyboard grabs for some grabs to be successful 2022-05-04 17:28:08 +00:00
ibusCandidatePopup.js ibusCandidatePopup: Prevent it from covering screenshot UI 2022-07-04 13:38:15 +00:00
iconGrid.js iconGrid: Delay updating adjustment value on page switch 2023-03-04 16:34:47 +01:00
inhibitShortcutsDialog.js inhibitShortcutsDialog: Stop using GTK to display shortcut 2023-03-06 15:08:56 +00:00
init.js init: Set console log domain 2021-09-01 14:55:47 +00:00
kbdA11yDialog.js kbdA11yDialog: Use MetaKeyboardA11yFlags 2022-06-16 09:38:20 +00:00
keyboard.js keyboard: Change osk menu entry to control-center keyboard pane 2022-11-24 13:49:55 +01:00
layout.js layout: Add work-around for testing greeter UI in nested 2023-02-09 19:59:12 +01:00
lightbox.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
locatePointer.js locatePointer: Bind ripples creation to settings 2019-09-09 19:28:18 +00:00
lookingGlass.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
magnifier.js Adopt EventEmitter class instead of injecting Signal methods 2022-07-04 18:30:49 -04:00
main.js main: Fix syncing animations-enabled 2023-03-19 13:39:41 +00:00
messageList.js messageList: Only close messages via delete key if they can be closed 2022-06-04 15:23:45 +02:00
messageTray.js messageTray: Don't set _notificationRemoved if destroyed notification is queued 2023-04-17 19:40:45 +00:00
modalDialog.js modalDialog: Fix fading out dialog 2023-03-19 19:54:45 +00:00
mpris.js cleanup: Use deepUnpack() intead of deep_unpack() 2022-08-10 10:29:24 +00:00
notificationDaemon.js general: Rename "application" to "app" 2023-02-07 14:46:28 +00:00
osdMonitorLabeler.js js: Get monitor manager from backend 2022-12-16 22:12:59 +01:00
osdWindow.js osdWindow: Implement new OSD design 2022-02-12 15:28:52 +00:00
overview.js overview: Hide when failing to take grab at end of startup animation 2023-03-02 00:08:09 +00:00
overviewControls.js general: Rename "application" to "app" 2023-02-07 14:46:28 +00:00
padOsd.js general: Rename "application" to "app" 2023-02-07 14:46:28 +00:00
pageIndicators.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
panel.js quickSettings: Add background apps menu 2023-02-12 16:16:36 +00:00
panelMenu.js panelMenu: Fix keynav of menu-less buttons 2023-04-17 20:09:56 +00:00
pointerA11yTimeout.js ui: Use ClutterSeat for keyboard/pointer a11y 2020-01-30 17:49:08 +00:00
pointerWatcher.js js: Get idle monitor from backend 2021-05-18 13:42:52 +00:00
popupMenu.js popupMenu: Close quick settings when activating settings action 2022-08-02 16:05:28 +00:00
quickSettings.js quickSettings: Fix icon-name construct property in menu toggles 2023-03-27 14:52:50 +00:00
remoteSearch.js search: Stop special-casing GNOME Settings on search 2022-12-15 19:02:02 +00:00
ripples.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
runDialog.js runDialog: Use single quotes for Wayland restart warning 2022-05-31 18:35:41 +00:00
screenShield.js general: Rename "application" to "app" 2023-02-07 14:46:28 +00:00
screenshot.js screenshot: Fix broken GLib.Error.matches call 2023-03-25 11:57:07 -07:00
scripting.js tests: Add test running basic perf test 2022-11-25 22:09:53 +01:00
search.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
searchController.js searchController: Use connectObject for the stage key focus signal 2022-11-25 22:09:37 +01:00
sessionMode.js fileUtils: Refactor collectFromDatadirs to be a generator 2022-12-01 12:59:32 +00:00
shellDBus.js general: Rename "application" to "app" 2023-02-07 14:46:28 +00:00
shellEntry.js shellEntry: Remove unused variable 2022-10-14 22:32:30 +00:00
shellMountOperation.js shellMountOperation: Don't read unavailable desktop file 2023-02-02 19:33:10 +01:00
slider.js slider: Use Clutter.grab() for implicit grab 2022-01-29 01:16:29 +01:00
swipeTracker.js swipeTracker: Drop grab-op-begin signal connection 2023-01-30 12:19:22 +00:00
switcherPopup.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
switchMonitor.js js: Get monitor manager from backend 2022-12-16 22:12:59 +01:00
unlockDialog.js lockscreen: Style cleanup for lock and login 2023-01-06 11:29:31 +00:00
userWidget.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
welcomeDialog.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
windowAttentionHandler.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
windowManager.js windowManager: Drop grab-op-begin signal connection 2023-01-30 12:19:22 +00:00
windowMenu.js panel,windowMenu: Update to meta_window_begin_grab_op() API change 2023-01-30 12:19:22 +00:00
windowPreview.js windowPreview: Ignore leave events after being destroyed 2023-04-18 19:44:20 +00:00
workspace.js workspace: Port WorkspaceBackground allocate to C 2022-08-03 12:30:31 +00:00
workspaceAnimation.js workspaceAnimation: Get time outside of the animation-complete callback 2022-03-13 00:06:03 +00:00
workspacesView.js workspacesView: Update visibility after updating workspaces 2023-03-21 12:02:52 +00:00
workspaceSwitcherPopup.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
workspaceThumbnail.js js: Queue 'later' via MetaLaters 2022-12-16 22:12:59 +01:00
xdndHandler.js Adopt EventEmitter class instead of injecting Signal methods 2022-07-04 18:30:49 -04:00