Bug 370720

Summary: Keyboard shortcut list is incomplete when opening Krita
Product: [Applications] krita Reporter: RN <rafanavega>
Component: Shortcuts and Canvas Input SettingsAssignee: Krita Bugs <krita-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: halla
Priority: NOR    
Version: 3.0.1.1   
Target Milestone: ---   
Platform: Microsoft Windows   
OS: Microsoft Windows   
Latest Commit: Version Fixed In:

Description RN 2016-10-14 02:21:32 UTC
If you go to Settings -> Configure Krita -> Keyboard Shortcuts when you open Krita, the list shows a certain amount of shortcuts.

If you open or create a document and then go to that shortcut list again it has more shortcut categories than before (the 'Painting' category, for example).

Reproducible: Always



Expected Results:  
Please make the shortcut list complete from the start of the program, without the need to open or create a document.
Comment 1 Halla Rempt 2016-10-14 06:55:33 UTC
Hi,

Thanks for your report. I can confirm the issue. This was supposed to be fixed in 3.0, but I guess we either have a regression, or missed something.
Comment 2 Dmitry Kazakov 2016-12-09 10:04:33 UTC
Git commit e7652741ecf2928fb20ccb1fc81bf56bcab853a1 by Dmitry Kazakov.
Committed on 09/12/2016 at 10:04.
Pushed by dkazakov into branch 'krita/3.1'.

All shortcuts should be configurable when no document is open

The problem happens because some actions are created/added-to-collection
only after a document is created. Now we workaround it by faking the
absent actions and deleting them together with KisActionsSnapshot.

Another problem is that some of the actions, e.g. "show_color_history",
is created long before it is added to the global action collection. It
is _created_ right at the start of Krita, but _added_ only when a new document
is constructed. If we change the shortcut between these two events, then
the changed value will be lost. Now we workaround this problem by connecting
to the action collection, listening to 'inserted()' signal and updating
shortcuts when an action is added to the collection.

M  +4    -0    krita/data/actions/ConnectionTool.action
M  +3    -52   krita/krita.action
M  +2    -0    krita/kritamenu.action
M  +4    -3    libs/ui/KisViewManager.cpp
M  +23   -7    libs/ui/kis_action_manager.cpp
M  +6    -3    libs/ui/kis_action_manager.h
M  +1    -1    libs/ui/kis_zoom_manager.cc
M  +2    -16   libs/widgets/KoZoomController.cpp
M  +0    -18   libs/widgets/KoZoomController.h
M  +1    -2    libs/widgets/KoZoomController_p.h
M  +31   -2    libs/widgetutils/KisActionsSnapshot.cpp
M  +1    -1    libs/widgetutils/KisActionsSnapshot.h
M  +5    -0    libs/widgetutils/kis_action_registry.cpp
M  +3    -0    libs/widgetutils/kis_action_registry.h

https://commits.kde.org/krita/e7652741ecf2928fb20ccb1fc81bf56bcab853a1
Comment 3 Dmitry Kazakov 2016-12-09 10:05:32 UTC
Git commit aeced4a1c199c4fb73d1beaa82315a088c410d72 by Dmitry Kazakov.
Committed on 09/12/2016 at 10:05.
Pushed by dkazakov into branch 'rempt/impex-refactoring'.

All shortcuts should be configurable when no document is open

The problem happens because some actions are created/added-to-collection
only after a document is created. Now we workaround it by faking the
absent actions and deleting them together with KisActionsSnapshot.

Another problem is that some of the actions, e.g. "show_color_history",
is created long before it is added to the global action collection. It
is _created_ right at the start of Krita, but _added_ only when a new document
is constructed. If we change the shortcut between these two events, then
the changed value will be lost. Now we workaround this problem by connecting
to the action collection, listening to 'inserted()' signal and updating
shortcuts when an action is added to the collection.

M  +4    -0    krita/data/actions/ConnectionTool.action
M  +3    -52   krita/krita.action
M  +2    -0    krita/kritamenu.action
M  +4    -3    libs/ui/KisViewManager.cpp
M  +23   -7    libs/ui/kis_action_manager.cpp
M  +6    -3    libs/ui/kis_action_manager.h
M  +1    -1    libs/ui/kis_zoom_manager.cc
M  +2    -16   libs/widgets/KoZoomController.cpp
M  +0    -18   libs/widgets/KoZoomController.h
M  +1    -2    libs/widgets/KoZoomController_p.h
M  +31   -2    libs/widgetutils/KisActionsSnapshot.cpp
M  +1    -1    libs/widgetutils/KisActionsSnapshot.h
M  +5    -0    libs/widgetutils/kis_action_registry.cpp
M  +3    -0    libs/widgetutils/kis_action_registry.h

https://commits.kde.org/krita/aeced4a1c199c4fb73d1beaa82315a088c410d72