Bug 454704

Summary: Shortcut conflicts dialog stopped showing conflict information
Product: [Frameworks and Libraries] frameworks-kxmlgui Reporter: iodreamify
Component: generalAssignee: kdelibs bugs <kdelibs-bugs>
Status: RESOLVED FIXED    
Severity: normal CC: a.samirh78, nate, putr4.s
Priority: NOR    
Version: 5.94.0   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed In: 5.96
Attachments: screenshot

Description iodreamify 2022-06-01 12:43:50 UTC
Created attachment 149377 [details]
screenshot

SUMMARY
When setting a new shortcut for a function that already had something bound to it, a window pops up informing you that the key combination is already taken. But it also used to tell you which function it is currently bound to and now this information is just empty. 

STEPS TO REPRODUCE
1. Bind the default shortcut to take a regional screenshot in Spectacle to Meta+Shift+Print
2. In the same spectacle window try to assign the same combination of Meta+Shift+Print to some other function

This also happens in other apps and when adding a custom global shortcut in systemsettings.

OBSERVED RESULT
The warning appears with no info about the already assigned function

EXPECTED RESULT
The warning appears with info about the already assigned function

Operating System: Arch Linux
KDE Plasma Version: 5.24.5
KDE Frameworks Version: 5.94.0
Qt Version: 5.15.4
Kernel Version: 5.18.1-arch1-1 (64-bit)
Graphics Platform: X11
Processors: 4 × Intel® Core™ i3-2310M CPU @ 2.10GHz
Memory: 7,6 GiB of RAM
Graphics Processor: Mesa Intel® HD Graphics 3000
Comment 1 Nate Graham 2022-06-01 18:16:49 UTC
Works for me for other shortcuts (e.g. Meta+period). However I notice that when I try to assign something to Meta+Shift+Print, it won't accept that shortcut combination at all. Is this what you're seeing?
Comment 2 Nate Graham 2022-06-01 18:18:34 UTC
Scratch that, I was testing wrong. I do see the conflict dialog in all cases, and it tells me what the conflicting shortcut is.

You're doing this from System Settings, right?
Comment 3 iodreamify 2022-06-01 19:07:13 UTC
(In reply to Nate Graham from comment #2)
> Scratch that, I was testing wrong. I do see the conflict dialog in all
> cases, and it tells me what the conflicting shortcut is.
> 
> You're doing this from System Settings, right?

My original steps were done in the "Configure" button from within Spectacle itself. But i see they also show the same behavior from within System Settings -> Custom Shortcut -> Add new global shortcut and setting a shortcut there to an already assigned one. Same dialog appears as in the attached screenshot. 

But the System Settings Global Shortcuts menu for various apps do show conflicts correctly with slightly different text. 

I also just tried conflicts from within other apps like Dolphin and Kate and they all identify conflicts correctly.
Comment 4 Nate Graham 2022-06-02 15:29:37 UTC
Can confirm in Spectacle itself.
Comment 5 Bug Janitor Service 2022-06-05 03:54:41 UTC
A possibly relevant merge request was started @ https://invent.kde.org/frameworks/kglobalaccel/-/merge_requests/46
Comment 6 Ahmad Samir 2022-06-10 22:03:05 UTC
Git commit 1a8e8cb00cda5807926a90ae8e5d5597354f3541 by Ahmad Samir.
Committed on 10/06/2022 at 21:45.
Pushed by ahmadsamir into branch 'master'.

Fix D-Bus de/marshalling KGlobalAccel::MatchType

Otherwise the globalShortcutsByKey() method is silently skipped, and isn't
visible on the org.kde.KGlobalAccel D-Bus interface.

It turns out that to test changes made in kglobalaccel d-bus interface, you
need to kill the system /usr/bin/kglobalaccel process (be careful as that
breaks the most basic shortcuts, e.g. Alt+Tab), and run the one from the
build-dir, otherwise the session d-bus won't pick up your changes.

To test:
- List all methods on the interface:
  `qdbus org.kde.kglobalaccel /kglobalaccel`
- The followin messages are printed in the system log/journal:
Skipped method "globalShortcutsByKey" : Unregistered input type in parameter list: KGlobalAccel::MatchType
Skipped method "globalShortcutsByKey" : Unregistered input type in parameter list: KGlobalAccel::MatchType

To see the behaviour mentioned in the bug report:
- Create a global shortcut of some kind (e.g. F4 to start some app)
- open the shortcut editor in e.g. Dolphin, and try to assign that same
  shortcut to some other action the conflict shortcut message dialog should
  show a message similar to the one in the attached screenshot at:
  https://bugs.kde.org/show_bug.cgi?id=454704#c0
The list of GlobalShortcutInfo returned by globalShortcutsByKey() is empty
because the method couldn't be found on the d-bus interface.

After applying patch:
- kill the system /usr/bin/kglobalaccel and start the one from the build
  dir
- Start Dolphin with the libs from the build-dir e.g.:
  LD_LIBRARY_PATH=build-dir/bin/ dolphin
- The info about the global shortcut should be shown in the message dialog
FIXED-IN: 5.95

M  +19   -0    src/kglobalaccel.cpp
M  +3    -0    src/kglobalaccel.h
M  +1    -0    src/kglobalshortcutinfo_p.h
M  +2    -1    src/org.kde.KGlobalAccel.xml
M  +2    -2    src/runtime/kglobalacceld.cpp

https://invent.kde.org/frameworks/kglobalaccel/commit/1a8e8cb00cda5807926a90ae8e5d5597354f3541
Comment 7 Nate Graham 2022-06-21 17:13:51 UTC
*** Bug 455530 has been marked as a duplicate of this bug. ***