Bug 352476

Summary: Keyboard navigation in systray and the popup
Product: [Plasma] plasmashell Reporter: Josef Kufner <jk>
Component: System TrayAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED FIXED    
Severity: normal CC: bugseforuns, madewokherd, mklapetek, nate, plasma-bugs
Priority: NOR Keywords: accessibility, usability
Version: 5.3.2   
Target Milestone: 1.0   
Platform: Other   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=409488
https://bugs.kde.org/show_bug.cgi?id=454729
Latest Commit: Version Fixed In: 5.25
Sentry Crash Report:

Description Josef Kufner 2015-09-09 11:29:07 UTC
When notifications popup is opened, it is not possible to use keyboard to navigate it nor to close it.

I would expect that ctrl+tab or arrows navigate between individual popups of docked icons. Also the Escape key should close the popup.

Reproducible: Always

Steps to Reproduce:
1. Assign keyboard shortcut to system tray
2. Hit the shortcut, notifications popup opens
3. Hit Escape key to close the notifications, but nothing happens


Expected Results:  
When notification popup has focus, it should be possible to close it with Escape key.
Comment 1 Martin Klapetek 2015-09-23 15:14:53 UTC
Thanks for the report

Just to check - you mean if you open any systray applet (battery, networks, notifications), pressing escape does not close it and there's no keyboard navigation in any of those opened applets, correct?
Comment 2 Josef Kufner 2015-10-02 22:39:34 UTC
Almost. I assigned keyboard shortcut to whole systray, not to any particular systray applet. And it is not only about Escape key, it should be possible to use keyboard to navigate between systray applets when any of them is open. But otherwise it is correct.
Comment 3 Andrew Crouthamel 2018-09-25 21:41:29 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information as soon as possible and set the bug status as REPORTED. Due to regular bug tracker maintenance, if the bug is still in NEEDSINFO status with no change in 30 days, the bug will be closed as RESOLVED > WORKSFORME due to lack of needed information.

For more information about our bug triaging procedures please read the wiki located here: https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please set the bug status as REPORTED so that the KDE team knows that the bug is ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 4 Josef Kufner 2018-09-25 21:51:48 UTC
Update 3 years later ... The Escape key closes the popup, but still can't switch to next/prev icon, e.g., from Network to Bluetooth to volume...
Comment 5 Nate Graham 2021-04-05 18:00:04 UTC
Partial support added with https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/767. This handles passing keyboard focus to individual applets when opened.
Comment 8 Marco Martin 2022-02-02 11:32:04 UTC
Git commit 7dd5210c8766f4226c27afe5a4ef83ece6d15143 by Marco Martin, on behalf of Benjamin Port.
Committed on 02/02/2022 at 11:31.
Pushed by mart into branch 'master'.

Allow Panel and systray keyboard navigation

Allow the Panel to get active keyboard focus via a kwyboard shortcut which will cycle between all panels.
When a panel has focus, the active focus can be navigated around either with tab/backtab or arrow keys.
Simple popup applets which only display an icon will work automatically, 
Complex applets like the System tray or the taskbar will have focus that can navigate on all their sub-elements, to activate a particular systray applet or activate a particular window

Co-authored with Benjamin Port<benjamin.port@enioka.com>

M  +15   -0    applets/activitybar/contents/ui/main.qml
M  +16   -1    applets/icon/package/contents/ui/main.qml
M  +15   -1    applets/lock_logout/contents/ui/lockout.qml
M  +11   -0    applets/systemtray/package/contents/ui/ExpandedRepresentation.qml
M  +19   -1    applets/systemtray/package/contents/ui/ExpanderArrow.qml
M  +7    -18   applets/systemtray/package/contents/ui/HiddenItemsView.qml
M  +29   -2    applets/systemtray/package/contents/ui/items/AbstractItem.qml
M  +5    -0    applets/systemtray/package/contents/ui/items/ItemLoader.qml
M  +3    -25   applets/systemtray/package/contents/ui/items/PlasmoidItem.qml
M  +6    -6    applets/systemtray/package/contents/ui/items/StatusNotifierItem.qml
M  +10   -1    applets/systemtray/package/contents/ui/main.qml
M  +32   -0    shell/panelview.cpp
M  +1    -0    shell/panelview.h
M  +22   -0    shell/shellcorona.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/7dd5210c8766f4226c27afe5a4ef83ece6d15143
Comment 9 Nate Graham 2022-02-03 23:16:45 UTC
This is all done now!
Comment 10 Bug Janitor Service 2022-05-26 15:59:45 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/960
Comment 11 Bug Janitor Service 2022-05-26 16:04:14 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1771
Comment 12 Nate Graham 2022-05-30 13:26:59 UTC
Git commit bad07cde1386575fa88bfd50a3ec2fa3dd2b1ee7 by Nate Graham, on behalf of Fushan Wen.
Committed on 30/05/2022 at 13:17.
Pushed by ngraham into branch 'master'.

shell: move keyboard focus code from frontend to backend

It makes the code easier to be maintained across different platforms.
Related: bug 453166

M  +10   -10   shell/shellcorona.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/bad07cde1386575fa88bfd50a3ec2fa3dd2b1ee7
Comment 13 Nate Graham 2022-05-30 13:27:00 UTC
Git commit 53fdac77ec442aa384f1df2be75934c76bb828ff by Nate Graham, on behalf of Fushan Wen.
Committed on 30/05/2022 at 13:17.
Pushed by ngraham into branch 'master'.

shell/panelview: restore old window focus when panel loses focus
Related: bug 453166

M  +21   -0    shell/panelview.cpp
M  +10   -0    shell/panelview.h
M  +9    -0    shell/shellcorona.cpp
M  +4    -0    shell/shellcorona.h

https://invent.kde.org/plasma/plasma-workspace/commit/53fdac77ec442aa384f1df2be75934c76bb828ff
Comment 14 Nate Graham 2022-05-30 13:27:08 UTC
Git commit d2057d7174975c4379266f48f987fbac967e8ef3 by Nate Graham, on behalf of Fushan Wen.
Committed on 30/05/2022 at 13:17.
Pushed by ngraham into branch 'master'.

shell/panelview: press shortcut to unfocus on the panel when it's in focused state

The second time pressing Meta+Alt+P, the panel should be unfocused.
Related: bug 453166

M  +3    -0    shell/shellcorona.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/d2057d7174975c4379266f48f987fbac967e8ef3
Comment 15 Nate Graham 2022-05-30 13:27:32 UTC
Git commit 6eac53b6d0b19e46c28018434ff416ba144d0c1a by Nate Graham, on behalf of Fushan Wen.
Committed on 30/05/2022 at 13:17.
Pushed by ngraham into branch 'master'.

shell/panelview: set passive status when pressing Escape key
Related: bug 453166

M  +8    -0    shell/panelview.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/6eac53b6d0b19e46c28018434ff416ba144d0c1a
Comment 16 Nate Graham 2022-05-30 13:27:40 UTC
Git commit 3a16cbe7b01622ca1f6e045ddde7c7a61708f990 by Nate Graham, on behalf of Fushan Wen.
Committed on 30/05/2022 at 13:17.
Pushed by ngraham into branch 'master'.

shell/panelview: unfocus on the panel when clicking outside

When the panel is focused, clicking outside should make the panel
unfocused.
Related: bug 453166

M  +7    -0    shell/panelview.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/3a16cbe7b01622ca1f6e045ddde7c7a61708f990
Comment 17 Nate Graham 2022-05-30 13:27:56 UTC
Git commit c89fb19673e35fc50a42a114ad3e52a503c05098 by Nate Graham, on behalf of Fushan Wen.
Committed on 30/05/2022 at 13:17.
Pushed by ngraham into branch 'master'.

desktoppackage: don't focus on panel when pressing applet shortcuts

The panel focus shortcut is Meta+Alt+P. This keeps the old behavior.
Related: bug 453166
FIXED-IN: 5.25

M  +0    -20   desktoppackage/contents/views/Panel.qml

https://invent.kde.org/plasma/plasma-desktop/commit/c89fb19673e35fc50a42a114ad3e52a503c05098
Comment 18 Nate Graham 2022-05-30 13:36:19 UTC
Git commit e315dcd8cd6631a5d7030f437380e0ef6f51b6b6 by Nate Graham, on behalf of Fushan Wen.
Committed on 30/05/2022 at 13:36.
Pushed by ngraham into branch 'Plasma/5.25'.

desktoppackage: don't focus on panel when pressing applet shortcuts

The panel focus shortcut is Meta+Alt+P. This keeps the old behavior.
Related: bug 453166
FIXED-IN: 5.25


(cherry picked from commit c89fb19673e35fc50a42a114ad3e52a503c05098)

M  +0    -20   desktoppackage/contents/views/Panel.qml

https://invent.kde.org/plasma/plasma-desktop/commit/e315dcd8cd6631a5d7030f437380e0ef6f51b6b6
Comment 19 Nate Graham 2022-05-30 13:37:52 UTC
Git commit 18cfb226fc8b56346d66eb51d84c1ed7fbdc53d3 by Nate Graham, on behalf of Fushan Wen.
Committed on 30/05/2022 at 13:37.
Pushed by ngraham into branch 'Plasma/5.25'.

shell: move keyboard focus code from frontend to backend

It makes the code easier to be maintained across different platforms.
Related: bug 453166
(cherry picked from commit bad07cde1386575fa88bfd50a3ec2fa3dd2b1ee7)

M  +10   -10   shell/shellcorona.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/18cfb226fc8b56346d66eb51d84c1ed7fbdc53d3
Comment 20 Nate Graham 2022-05-30 13:38:06 UTC
Git commit 7df9ad19f9b17e13febf07050e7dc54c85a2773b by Nate Graham, on behalf of Fushan Wen.
Committed on 30/05/2022 at 13:37.
Pushed by ngraham into branch 'Plasma/5.25'.

shell/panelview: restore old window focus when panel loses focus
Related: bug 453166
(cherry picked from commit 53fdac77ec442aa384f1df2be75934c76bb828ff)

M  +21   -0    shell/panelview.cpp
M  +10   -0    shell/panelview.h
M  +9    -0    shell/shellcorona.cpp
M  +4    -0    shell/shellcorona.h

https://invent.kde.org/plasma/plasma-workspace/commit/7df9ad19f9b17e13febf07050e7dc54c85a2773b
Comment 21 Nate Graham 2022-05-30 13:38:16 UTC
Git commit 74f54bced881b917f71189565ecc3aaab3cefe11 by Nate Graham, on behalf of Fushan Wen.
Committed on 30/05/2022 at 13:37.
Pushed by ngraham into branch 'Plasma/5.25'.

shell/panelview: set passive status when pressing Escape key
Related: bug 453166
(cherry picked from commit 6eac53b6d0b19e46c28018434ff416ba144d0c1a)

M  +8    -0    shell/panelview.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/74f54bced881b917f71189565ecc3aaab3cefe11
Comment 22 Nate Graham 2022-05-30 13:38:24 UTC
Git commit 4eeb953bd7ceca4b3b76728abd8dffda2671ab36 by Nate Graham, on behalf of Fushan Wen.
Committed on 30/05/2022 at 13:37.
Pushed by ngraham into branch 'Plasma/5.25'.

shell/panelview: unfocus on the panel when clicking outside

When the panel is focused, clicking outside should make the panel
unfocused.
Related: bug 453166
(cherry picked from commit 3a16cbe7b01622ca1f6e045ddde7c7a61708f990)

M  +7    -0    shell/panelview.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/4eeb953bd7ceca4b3b76728abd8dffda2671ab36
Comment 23 Nate Graham 2022-05-30 13:38:40 UTC
Git commit 9e1cbb8ff214f8277a308c20760d03cf151667e1 by Nate Graham, on behalf of Fushan Wen.
Committed on 30/05/2022 at 13:37.
Pushed by ngraham into branch 'Plasma/5.25'.

shell/panelview: press shortcut to unfocus on the panel when it's in focused state

The second time pressing Meta+Alt+P, the panel should be unfocused.
Related: bug 453166
(cherry picked from commit d2057d7174975c4379266f48f987fbac967e8ef3)

M  +3    -0    shell/shellcorona.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/9e1cbb8ff214f8277a308c20760d03cf151667e1
Comment 24 Bug Janitor Service 2022-06-02 09:40:59 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/968
Comment 25 Bug Janitor Service 2022-06-02 09:49:16 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1799
Comment 26 Nate Graham 2022-06-02 15:51:56 UTC
Git commit 47acfaff51480f02bac1b0dc429dbeb4055478b9 by Nate Graham, on behalf of Fushan Wen.
Committed on 02/06/2022 at 15:45.
Pushed by ngraham into branch 'master'.

shell: fix pressing enter not activating the new window

In panelview.cpp, the old window focus is restored when switching to
Passive status. This fixes the behavior by setting the panel status to a
status that is not AcceptingInputStatus.
Related: bug 454729
FIXED-IN: 5.25

M  +2    -1    shell/panelview.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/47acfaff51480f02bac1b0dc429dbeb4055478b9
Comment 27 Nate Graham 2022-06-02 15:54:32 UTC
Git commit 9bf0b879931d41c981f814eaa27b356fe56e5f2a by Nate Graham, on behalf of Fushan Wen.
Committed on 02/06/2022 at 15:54.
Pushed by ngraham into branch 'Plasma/5.25'.

shell: fix pressing enter not activating the new window

In panelview.cpp, the old window focus is restored when switching to
Passive status. This fixes the behavior by setting the panel status to a
status that is not AcceptingInputStatus.
Related: bug 454729
FIXED-IN: 5.25


(cherry picked from commit 47acfaff51480f02bac1b0dc429dbeb4055478b9)

M  +2    -1    shell/panelview.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/9bf0b879931d41c981f814eaa27b356fe56e5f2a
Comment 28 Bug Janitor Service 2022-07-30 05:40:04 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1983
Comment 29 Fushan Wen 2022-08-20 04:42:51 UTC
Git commit 07efee1095edfb2e27e06952ab83d9ddbe30098b by Fushan Wen.
Committed on 20/08/2022 at 04:34.
Pushed by fusionfuture into branch 'master'.

shell: allow to cycle through multiple panels

This adds `m_blockRestorePreviousWindow` to avoid restoring focus to the
panel, and replace QHash with QMap to save panel orders.
Related: bug 453166

M  +1    -16   shell/panelview.cpp
M  +0    -7    shell/panelview.h
M  +94   -27   shell/shellcorona.cpp
M  +18   -2    shell/shellcorona.h

https://invent.kde.org/plasma/plasma-workspace/commit/07efee1095edfb2e27e06952ab83d9ddbe30098b
Comment 30 Bug Janitor Service 2022-09-17 11:38:22 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/2133
Comment 31 Bug Janitor Service 2022-09-17 11:38:56 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/1152
Comment 32 Harald Sitter 2022-12-12 23:17:54 UTC
*** Bug 462861 has been marked as a duplicate of this bug. ***
Comment 33 Fushan Wen 2023-07-21 19:02:13 UTC
Git commit 55a9eeba7595548e4e748d95a103813359639dff by Fushan Wen.
Committed on 21/07/2023 at 18:12.
Pushed by fusionfuture into branch 'master'.

desktoppackage: activate panel on "Activate Panel Widget" shortcut pressed

This partially reverts c89fb19673e35fc50a42a114ad3e52a503c05098 to bring
back onActivated signal required by the global shortcut.
Related: bug 455398, bug 453166
FIXED-IN: 5.26

M  +11   -0    desktoppackage/contents/views/Panel.qml

https://invent.kde.org/plasma/plasma-desktop/-/commit/55a9eeba7595548e4e748d95a103813359639dff
Comment 34 Fushan Wen 2023-07-21 19:04:25 UTC
Git commit 648e10cea66926e93b52b9a7e0cc65b4055448e6 by Fushan Wen.
Committed on 21/07/2023 at 19:03.
Pushed by fusionfuture into branch 'Plasma/5.27'.

desktoppackage: activate panel on "Activate Panel Widget" shortcut pressed

This partially reverts c89fb196 to bring
back onActivated signal required by the global shortcut.
Related: bug 455398, bug 453166
FIXED-IN: 5.27

(cherry picked from commit 55a9eeba7595548e4e748d95a103813359639dff)

M  +12   -1    desktoppackage/contents/views/Panel.qml

https://invent.kde.org/plasma/plasma-desktop/-/commit/648e10cea66926e93b52b9a7e0cc65b4055448e6
Comment 35 Fushan Wen 2023-07-21 19:06:45 UTC
Git commit 2ae02766f8784fee5dcf33bfc6ae973e367beef1 by Fushan Wen.
Committed on 21/07/2023 at 18:50.
Pushed by fusionfuture into branch 'master'.

shell: move `forceActiveFocus` to `PanelView`

This allows to focus on the first child widget in a panel by setting
containment status directly.

This adds `savePreviousWindow()` to save the previously focused window,
to be called in `PanelView::refreshStatus`. When the previous window is
not reset, calling savePreviousWindow() will not do anything, so when
there are more than one panel, it will not incorrectly save the wrong
window (panel).
Related: bug 455398, bug 453166

M  +9    -0    shell/panelview.cpp
M  +14   -22   shell/shellcorona.cpp
M  +1    -0    shell/shellcorona.h

https://invent.kde.org/plasma/plasma-workspace/-/commit/2ae02766f8784fee5dcf33bfc6ae973e367beef1
Comment 36 Fushan Wen 2023-07-21 19:07:43 UTC
Git commit 6f0cd573dcc3634a453c8bb6b504013dc8372a95 by Fushan Wen.
Committed on 21/07/2023 at 19:06.
Pushed by fusionfuture into branch 'Plasma/5.27'.

shell: move `forceActiveFocus` to `PanelView`

This allows to focus on the first child widget in a panel by setting
containment status directly.

This adds `savePreviousWindow()` to save the previously focused window,
to be called in `PanelView::refreshStatus`. When the previous window is
not reset, calling savePreviousWindow() will not do anything, so when
there are more than one panel, it will not incorrectly save the wrong
window (panel).
Related: bug 455398, bug 453166

(cherry picked from commit 2ae02766f8784fee5dcf33bfc6ae973e367beef1)

M  +9    -0    shell/panelview.cpp
M  +14   -22   shell/shellcorona.cpp
M  +1    -0    shell/shellcorona.h

https://invent.kde.org/plasma/plasma-workspace/-/commit/6f0cd573dcc3634a453c8bb6b504013dc8372a95