From 49b9ae08d81345e17b7b7794709a374d5d57e058 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 18 Nov 2021 00:25:48 +0100 Subject: [PATCH] appDisplay: Explicitly highlight selected app icon While the menu is popped up, we artificially keep the icon highlighted by ensuring it's hovered, and muting events on the app icon until the menu is popped down. This is somewhat convoluted and won't work with Clutter.grab(), where it will be the menu itself that is the owner of input events while shown, so cut some corners and explicitly tell the app icon to be highlighted. Part-of: --- js/ui/appDisplay.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index df8acbf7b..79e8ef72b 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -1933,7 +1933,7 @@ class AppViewItem extends St.Button { label.disconnect(id); }); - const expand = this.hover || this.has_key_focus(); + const expand = this._forcedHighlight || this.hover || this.has_key_focus(); label.save_easing_state(); label.set_easing_duration(expand ? APP_ICON_TITLE_EXPAND_TIME @@ -2081,6 +2081,14 @@ class AppViewItem extends St.Button { get name() { return this._name; } + + setForcedHighlight(highlighted) { + this._forcedHighlight = highlighted; + this.set({ + track_hover: !highlighted, + hover: highlighted, + }); + } }); var FolderGrid = GObject.registerClass( @@ -3143,6 +3151,7 @@ var AppIcon = GObject.registerClass({ } popupMenu(side = St.Side.LEFT) { + this.setForcedHighlight(true); this._removeMenuTimeout(); this.fake_release(); @@ -3163,16 +3172,12 @@ var AppIcon = GObject.registerClass({ Main.overview.disconnect(id); }); - // We want to keep the item hovered while the menu is up - this._menu.blockSourceEvents = true; - Main.uiGroup.add_actor(this._menu.actor); this._menuManager.addMenu(this._menu); } this.emit('menu-state-changed', true); - this.set_hover(true); this._menu.open(BoxPointer.PopupAnimation.FULL); this._menuManager.ignoreRelease(); this.emit('sync-tooltip'); @@ -3181,7 +3186,7 @@ var AppIcon = GObject.registerClass({ } _onMenuPoppedDown() { - this.sync_hover(); + this.setForcedHighlight(false); this.emit('menu-state-changed', false); }