Workaround preview menu closing on context menu

sync_hover not working on g-s 49
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8684
This commit is contained in:
Charles Gagnon
2025-09-27 23:13:30 -04:00
parent c671d9e78b
commit 9f49f74c3b

View File

@@ -418,7 +418,7 @@ export const PreviewMenu = GObject.registerClass(
_onHoverChanged() {
this._endOpenCloseTimeouts()
if (this.currentAppIcon && !this.menu.hover) {
if (this.currentAppIcon && !this.menu.hover && !this.hasGrab) {
this._addCloseTimeout()
this._endPeek()
}
@@ -1131,6 +1131,8 @@ export const Preview = GObject.registerClass(
this._previewMenu.peekInitialWorkspaceIndex,
)
this._previewMenu.hasGrab = true
Main.wm._showWindowMenu(null, this.window, Meta.WindowMenuType.WM, {
x: coords[0],
y: coords[1],
@@ -1140,10 +1142,13 @@ export const Preview = GObject.registerClass(
let menu = Main.wm._windowMenuManager._manager._menus[0]
menu.connect('open-state-changed', () =>
this._previewMenu.menu.sync_hover(),
)
this._previewMenu.menu.sync_hover()
menu.connect('open-state-changed', (menu, opened) => {
if (!opened) {
delete this._previewMenu.hasGrab
if (!this._previewMenu.menu.hover) this._previewMenu.close()
}
})
if (this.window.get_workspace() != currentWorkspace) {
let menuItem = new PopupMenu.PopupMenuItem(