gnome-shell/js/ui
Jonas Dreßler 95f4a1ecd6 windowPreview: Avoid LEAVE events triggered by grab of our own StButton
Since the ClutterGrab rework, grabbing properly emits crossing events.

StButtons take a ClutterGrab as soon as they are pressed, so pressing
the close StButton of the WindowPreview takes a grab and causes a
LEAVE+key-focus-out event getting sent to the WindowPreview. This in
turn makes us hide our overlay (which the StButton is part of). We
automatically ungrab ClutterGrabs when hiding actors, so the StButtons
grab now gets released again, key-focus and hover state are updated
again and we emit an ENTER event to the WindowPreview. The preview now
tries show its overlay again and things explode because we re-enter the
mapping machinery.

For the LEAVE event we can break this cycle by detecting the GRAB_NOTIFY
crossing event of our own StButton and not reacting to that.

We should do the same for the key-focus-out event, but these don't pass
context information like a GRAB_NOTIFY flag yet, so just check the
current grab actor here.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3165

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2231>
2022-03-20 21:42:16 +00:00
..
components js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
status remoteAccess: Hide indicator after a timeout 2022-03-04 22:05:46 +00:00
accessDialog.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
altTab.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
animation.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
appDisplay.js appDisplay: Fix a typo in the DEFAULT_FOLDERS definition 2022-03-12 09:32:56 +00:00
appFavorites.js js: Use templates for non-translatable strings 2022-02-12 12:29:52 +00:00
appMenu.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
audioDeviceSelection.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
background.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
backgroundMenu.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +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 js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
checkBox.js checkbox: Improve accessibility of check boxes for Orca users 2020-03-29 12:56:33 +00:00
closeDialog.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
ctrlAltTab.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
dash.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
dateMenu.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
dialog.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
dnd.js dnd: Drop captured event handler 2022-02-02 17:22:20 +01:00
edgeDragAction.js keyboard: Handle edge drag gesture cancellation 2021-02-17 15:45:01 +00:00
endSessionDialog.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
environment.js signalTracker: Explicitly register destroyable types 2022-03-06 00:10:03 +00:00
extensionDownloader.js js: Use templates for non-translatable strings 2022-02-12 12:29:52 +00:00
extensionSystem.js js: Use templates for non-translatable strings 2022-02-12 12:29:52 +00:00
focusCaretTracker.js cleanup: Prefer template strings 2019-07-05 11:32:31 +00:00
grabHelper.js grabHelper: Special case event funneling towards the OSK 2022-03-12 09:28:14 +00:00
ibusCandidatePopup.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
iconGrid.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
inhibitShortcutsDialog.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
init.js init: Set console log domain 2021-09-01 14:55:47 +00:00
kbdA11yDialog.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
keyboard.js keyboard: Prevent OSK key buttons from creating grabs 2022-03-12 09:28:14 +00:00
layout.js Revert "layout: Exclude hidden actors from struts" 2022-03-05 22:29:57 +00: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 lookingGlass: Take separate grab for object inspector 2022-02-26 18:15:28 +01:00
magnifier.js magnifier: Update zoom region right after enabling the magnifier 2022-03-13 00:12:18 +00:00
main.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
messageList.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
messageTray.js signalTracker: Explicitly register destroyable types 2022-03-06 00:10:03 +00:00
modalDialog.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
mpris.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
notificationDaemon.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
osdMonitorLabeler.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
osdWindow.js osdWindow: Implement new OSD design 2022-02-12 15:28:52 +00:00
overview.js overview: Don't expect time argument from drag-end signal 2022-02-23 17:58:36 +00:00
overviewControls.js overviewControls: Do consider work area for HIDDEN state 2022-03-05 22:29:57 +00:00
padOsd.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
pageIndicators.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
panel.js panel: Listen differently for button-press events 2022-03-05 23:51:59 +00:00
panelMenu.js js: Use templates for non-translatable strings 2022-02-12 12:29:52 +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: Fix usage of GRAB_NOTIFY ClutterEventFlag 2022-03-20 21:42:16 +00:00
remoteSearch.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
ripples.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
runDialog.js js: Use templates for non-translatable strings 2022-02-12 12:29:52 +00:00
screenShield.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
screenshot.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
scripting.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
search.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
searchController.js searchController: Avoid event.set_source() API 2022-03-04 12:27:34 +00:00
sessionMode.js cleanup: Use new indentation style for arrays 2022-02-23 12:23:52 +00:00
shellDBus.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
shellEntry.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
shellMountOperation.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
slider.js slider: Use Clutter.grab() for implicit grab 2022-01-29 01:16:29 +01:00
swipeTracker.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
switcherPopup.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
switchMonitor.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
unlockDialog.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +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: Change unfullscreen mode to NORMAL 2022-03-13 00:01:17 +00:00
windowMenu.js windowMenu: Add an entry to take a screenshot 2022-02-12 00:20:54 +00:00
windowPreview.js windowPreview: Avoid LEAVE events triggered by grab of our own StButton 2022-03-20 21:42:16 +00:00
workspace.js workspace: Force creating new layout when there's no allocation yet 2022-03-13 00:16:19 +00:00
workspaceAnimation.js workspaceAnimation: Get time outside of the animation-complete callback 2022-03-13 00:06:03 +00:00
workspacesView.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
workspaceSwitcherPopup.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00
workspaceThumbnail.js workspaceThumbnail: Use transient object for connecting some signals 2022-03-05 10:08:48 +01:00
xdndHandler.js js: Use (dis)connectObject() 2022-03-04 14:14:37 +00:00