https://bugs.kde.org/show_bug.cgi?id=500696

cwo <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
      Latest Commit|                            |https://invent.kde.org/plas
                   |                            |ma/plasma-desktop/-/commit/
                   |                            |adae4b08fa73d5dc75cce41791a
                   |                            |39c91ac356168
             Status|ASSIGNED                    |RESOLVED

--- Comment #3 from cwo <[email protected]> ---
Git commit adae4b08fa73d5dc75cce41791a39c91ac356168 by Christoph Wolk.
Committed on 27/11/2025 at 20:46.
Pushed by cwo into branch 'master'.

applets/kicker: make submenu behavior more consistent with other menus

Kicker is supposed to mimic the regular (sub)menu behavior in
application menus, but it does not completely do so. For regular
(QtWidgets) menus, if a submenu is open and the user moves to another
entry that has a submenu, there is a slight delay before the new entry
hover-activates and the submenu is replaced. If the user moves to the
submenu and crosses another one, the crossed item is briefly
highlighted, but it snaps back to the original one (where the submenu is
open) as the user reaches the submenu (as long as it happens before the
delay is over).

Kicker is different: while the initial submenu also has a delay, when
one is already is open and the user moves to another item, the submenu
is exchanged immediately. If the user crosses multiple entries, they all
have to be layouted, the submenu resized, etc. only to be immediately
replaced with the next thing the user crosses over. This can cause
visual glitches and slight flickering, and while it is not very
expensive by itself, if it happens many times per second it can cause
noticeable delay where the mouse cursor and menu highlight go out of
sync as Plasma is too busy creating and discarding submenu contents to
follow the cursor (bug 500696). To handle the case of moving the cursor
to a submenu, there is a partially implemented triangle mouse filter
that works rather inconsistently. The implementation for all this is
hard to follow as it is spread across multiple components with lots of
special-casing and internal state tracking and separate timers.

Instead, we have Kicker behave like regular menus, and only replace the
submenu after a small delay. This is more consistent with QtWidgets
menus and avoids the visual noise and slowdowns. It also allows us to
simplify the implementation, reducing the amount of state tracking and
custom behavior while having clearer and more standard code paths.

M  +0    -47   applets/kicker/ItemListDelegate.qml
M  +1    -0    applets/kicker/ItemListDialog.qml
M  +55   -65   applets/kicker/ItemListView.qml
M  +0    -2    applets/kicker/MenuRepresentation.qml

https://invent.kde.org/plasma/plasma-desktop/-/commit/adae4b08fa73d5dc75cce41791a39c91ac356168

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to