Please see the following video:
When using applications in KDE, it is very easy to accidentally activate a context menu item if the mouse cursor is not perfectly steady during the right mouse click that brings up the menu. As you can see in the video, in some cases the cursor only needs to travel 2 pixels between mouse press and release to activate the menu item.
Steps to reproduce:
1. Open Dolphin and move it to the bottom right-hand corner of the screen.
2. Right-click (and keep the mouse button down) in the white space near the bottom right-hand corner of Dolphin. The context menu should open just above the mouse cursor.
3. Move the mouse up 2 pixels and release the mouse button.
Result: The bottom entry of the context menu is activated. The problem is that this all too often happens very quickly if my mouse is not steady, or my trackpad's accuracy sucks (which it does). For example, I can't tell you how many times I've accidentally disabled a clip in this manner when editing videos in Kdenlive.
Some possible solutions include:
1. If a right mouse click is very short (very little time between mouse press and release), a context menu item shouldn't be activated on mouse button release.
2. Set a minimum number of pixels the mouse cursor must move between launching the menu (mouse right button press) and activating the menu item (mouse right button release).
3. Add a few pixels of padding region around the context menu where the cursor can exist without a menu item being selected. This solution already exists in the Oxygen widget style, as seen at the end of the video.
4. Have the context menu appear a few pixels away from the mouse cursor instead of right at the tip of the pointer. This solution would function similar to solution #3, but without causing potential changes to the appearance of the widget style.
I didn't know exactly which component to report this bug against, since as far as I know it could be a KDE, Qt, or Breeze issue. Please reassign as necessary.
** My System **
OS: KDE Neon 5.8.90 64-bit (Plasma Desktop 5.8.5+git20161227.1802-0, KDE Frameworks 5.30.0, Qt 5.7.0)
Linux Kernel: 220.127.116.11-generic
This needs to be fixed in Qt, and was already reported, but some Qt bug triager did not believe it is possible to select a menu item without explicitely clicking on it, so it was closed as invalid.
I suggest to report it again via https://bugreports.qt.io/ and hope that someone else can reproduce.
I have reported this bug for Qt here: https://bugreports.qt.io/browse/QTBUG-57849
*** Bug 387459 has been marked as a duplicate of this bug. ***
*** Bug 410236 has been marked as a duplicate of this bug. ***
*** This bug has been marked as a duplicate of bug 410493 ***
This issue is more serious when you use a pen tablet with programs such as Krita and Kdenlive. Often times due to pen being not steady the first menu entry is clicked. This sometimes happens so fast that you can't see the menu appear fully.
*** Bug 424444 has been marked as a duplicate of this bug. ***
Needs to be fixed in Qt. See https://bugreports.qt.io/browse/QTBUG-57849
*** Bug 430014 has been marked as a duplicate of this bug. ***
What is the status of this? I am still having this issue but all Qt bug reports I found on this were closed for one reason or another.
Generally speaking though I think another solution would be to straight off disable selecting anything using the right mouse button. You can't trigger regular buttons with the right mouse button, so why should you be able to select a context menu entry with it?
Idk if this is something that you even have control of or whether this (too) is something that has to be fixed on Qt's side.
Qt developers say it is fixed in Qt 6.
Okay thanks. Guess that means we're stuck with this until KDE switches to Qt 6.
Git commit 3993ab7900986b2c594ccad34ab93d30ff346f01 by Jan Blackquill, on behalf of Janet Blackquill.
Committed on 17/02/2022 at 23:42.
Pushed by ngraham into branch 'master'.
kstyle: add menu margin
This is more consistent with Plasma and our qqc2-desktop-style.
Related: bug 445886
M +1 -0 kstyle/breezemetrics.h
M +4 -0 kstyle/breezestyle.cpp