<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/103812/">http://git.reviewboard.kde.org/r/103812/</a>
     </td>
    </tr>
   </table>
   <br />





 <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">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).</pre>
 <br />







<p>- David</p>


<br />
<p>On January 28th, 2012, 3:28 p.m., Albert Astals Cid wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for kdelibs and David Faure.</div>
<div>By Albert Astals Cid.</div>


<p style="color: grey;"><i>Updated Jan. 28, 2012, 3:28 p.m.</i></p>






<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">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.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Fixes the issue in Okular, i tested it does still work with Kate that is using the ui.rc scheme.</pre>
  </td>
 </tr>
</table>



<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>


 <a href="http://bugs.kde.org/show_bug.cgi?id=292574">292574</a>


</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>kdeui/widgets/ktoolbar.cpp <span style="color: grey">(cce242b)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/103812/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>








  </div>
 </body>
</html>