Review Request: Write to the correct xmlFile in KToolBar::Private::slotContextShowText()

David Faure faure at kde.org
Thu Feb 9 09:28:37 GMT 2012


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/103812/#review10444
-----------------------------------------------------------


I was surprised that there was no way to go from the action to its collection, but indeed, it's not possible, because an action could be in multiple collections.
In such a case, your patch might do the wrong thing, picking the wrong collection.

But indeed the xmlguiclient member variable isn't much help either, it's "the last xmlgui client that had a <toolbar> tag pointing to this toolbar" (no misuse there btw).

I think the cleanest solution would be to search for the action in the N xmlguiclients that added actions to this toolbar.
Which means, deprecating KToolBar::setXMLGuiClient and adding a KToolBar::addXMLGuiClient, calling that from kxmlguibuilder instead, and keeping a list internally.
Then you can iterate over that list to find the action, which will prevent finding it in completely unrelated action collections (e.g. the one used for a popup menu, like in konqueror).

- David Faure


On Jan. 28, 2012, 3:28 p.m., Albert Astals Cid wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/103812/
> -----------------------------------------------------------
> 
> (Updated Jan. 28, 2012, 3:28 p.m.)
> 
> 
> Review request for kdelibs and David Faure.
> 
> 
> Description
> -------
> 
> KToolBar::Private::slotContextShowText() was assuming that the xmlgui file it had to write was
>   KGlobal::mainComponent.componentName() + "ui.rc";
> which is obviously wrong since we have a setXMLFile function for a reason.
> 
> I tried using 
>   xmlguiClient->xmlFile()
> directly but in Okular we use the same the same toolbar name defined in two xml files, so that still did not work because this means we end up with just one KToolbar (yes i know that might be a misuse of the API).
> 
> So i ended up going through the actioncollections to find the action and get the correct client from there.
> 
> 
> This addresses bug 292574.
>     http://bugs.kde.org/show_bug.cgi?id=292574
> 
> 
> Diffs
> -----
> 
>   kdeui/widgets/ktoolbar.cpp cce242b 
> 
> Diff: http://git.reviewboard.kde.org/r/103812/diff/diff
> 
> 
> Testing
> -------
> 
> Fixes the issue in Okular, i tested it does still work with Kate that is using the ui.rc scheme.
> 
> 
> Thanks,
> 
> Albert Astals Cid
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20120209/5e54c688/attachment.htm>


More information about the kde-core-devel mailing list