Global Shortcuts
David Faure
faure at kde.org
Mon Mar 17 09:31:47 GMT 2008
On Monday 17 March 2008, Michael Jansen wrote:
> 1. If a component ( see KComponentData ) registers a shortcut for the first
> time. kdedglobalaccel registers the component as inactive. The component
> goes on to registers it's global shortcuts but they won't be active. Code
> wise i see no changes. Everything could happen behind the scene. ( Where do
> not kxmlgui applications store their shortcuts? Not kxmlgui kparts are
> impossible? )
KParts is currently based on KXMLGUI.
But KDE applications can either use KXMLGUI or not.
If they don't, shortcuts are saved into a simple KConfig file -- see the
second half of KActionCollection::writeSettings, i.e. the case where parentGUIClient()->xmlFile() is empty.
I don't think it's a good idea to tie together the "global shortcuts" functionality
and XMLGUI. Before kde-4.0 was out there were talks about replacing xmlgui with
something entirely different, and the strong tie between KMainWindow and xmlgui
was a big problem (which has been solved with the KXmlGuiWindow split). The rest
didn't happen, but let's not make that mistake again, I can already foresee
that the aggressions against xmlgui will start again when kde 5 comes along
[or possibly even before, with the two technologies alongside each other].
If you really don't like "saving all global shortcuts into one config file" (me, I don't have
a problem with that), then make them saved in the application's config file.
More precisely, into the KComponentData::config() file, so that it works for parts and plugins too.
Yes, normal shortcuts are saved into the xmlgui file (with fallback to kconfig if not xmlgui),
but that's just a way of having to maintain two code paths instead of one. I can't see
a good reason why we don't just always save shortcuts into kconfig.
--
David Faure, faure at kde.org, sponsored by Trolltech to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).
More information about the kde-core-devel
mailing list