diff --git a/src/intellihide.js b/src/intellihide.js index a0e3983..52003fd 100644 --- a/src/intellihide.js +++ b/src/intellihide.js @@ -73,6 +73,9 @@ export const Intellihide = class { ) this.enabled = false + } + + init() { this._changeEnabledStatus() } diff --git a/src/panel.js b/src/panel.js index 2225921..1a72d3d 100644 --- a/src/panel.js +++ b/src/panel.js @@ -730,6 +730,8 @@ export const Panel = GObject.registerClass( this.taskbar.resetAppIcons(true) this.dynamicTransparency.updateExternalStyle() + if (this.intellihide?.enabled) this.intellihide.reset() + if (this.geom.vertical) { this.showAppsIconWrapper.realShowAppsIcon.toggleButton.set_width( this.geom.innerSize, diff --git a/src/panelManager.js b/src/panelManager.js index 15caccb..5fce29c 100755 --- a/src/panelManager.js +++ b/src/panelManager.js @@ -695,6 +695,9 @@ export const PanelManager = class { affectsStruts: true, }) + // intellihide changes the chrome when enabled, so init after setting initial chrome params + panel.intellihide.init() + this._findPanelMenuButtons(panelBox).forEach((pmb) => this._adjustPanelMenuButton(pmb, monitor, panel.geom.position), ) diff --git a/src/windowPreview.js b/src/windowPreview.js index d002083..440b4d3 100644 --- a/src/windowPreview.js +++ b/src/windowPreview.js @@ -313,7 +313,6 @@ export const PreviewMenu = GObject.registerClass( _setReactive(reactive) { this._box.get_children().forEach((c) => (c.reactive = reactive)) - this.menu.reactive = reactive } _setOpenedState(opened) { @@ -419,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() } @@ -1132,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], @@ -1141,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(