Please enter calligra-devel in the cc, it shall auto complete to the list.<br><br>On Wednesday, 19 August 2015, C. Boemann <<a href="mailto:cbo@boemann.dk">cbo@boemann.dk</a>> wrote:<br>> Yeah well it is used as a label in words, stage, sheets and flow, so adding<br>> extra text makes it spill over and possibly even becoming unreadable (depends<br>> on the tool obviously). Also<br>><br>> and by asap I mean before the next release  - sorry if that came out a bit<br>> harsh.<br>><br>> But just because krita has a feature request doesn't mean we should<br>> short circuit the review process. If phabricator can't send to all of calligra<br>> then we must use reviewboard instead.<br>><br>> On Wednesday 19 August 2015 12:37:16 you wrote:<br>>> Hi Camilla,<br>>><br>>> Before we "ASAP" revert or make it conditional, I'd like to know _what_ the<br>>> problem is you see with this patch. And it's a bit difficult right now who<br>>> to add individually to review request on Phabricator, but Friedrich was<br>>> also cc'ed on the change.<br>>><br>>> Anyway, since this patch delivers a feature users have been asking for since<br>>> 2006 or so, asking for an immediate revert without explaining what the<br>>> problem is goes way too far.<br>>><br>>> On Wed, 19 Aug 2015, C. Boemann wrote:<br>>> > please revert or make it conditional for krita only ASAP<br>>> ><br>>> > And in the future please add the rest of calligra as reviewers on commits<br>>> > to shared areas<br>>> ><br>>> > Camilla Boemann<br>>> ><br>>> > On Tuesday 18 August 2015 17:45:58 Michael Abrahams wrote:<br>>> >> Git commit 8a450ef60839cf77486d1bb9eb25b63ffcb1e468 by Michael<br>> Abrahams.<br>>> >> Committed on 18/08/2015 at 17:45.<br>>> >> Pushed by abrahams into branch 'calligra/2.9'.<br>>> >><br>>> >> Update tooltips to include keyboard shortcut.<br>>> >><br>>> >> Summary:<br>>> >> Tooltips will automatically change with changes to shorcuts.<br>>> >><br>>> >> Ref T199<br>>> >> BUG: 348626<br>>> >><br>>> >> Reviewers: dkazakov, rempt<br>>> >><br>>> >> Maniphest Tasks: T199<br>>> >><br>>> >> Differential Revision: <a href="https://phabricator.kde.org/D245">https://phabricator.kde.org/D245</a><br>>> >><br>>> >> M  +9    -4    libs/flake/KoToolManager.cpp<br>>> >> M  +1    -1    libs/flake/KoToolManager.h<br>>> >> M  +41   -9    libs/flake/KoToolManager_p.cpp<br>>> >> M  +9    -2    libs/flake/KoToolManager_p.h<br>>> >><br>>> >> <a href="http://commits.kde.org/calligra/8a450ef60839cf77486d1bb9eb25b63ffcb1e468">http://commits.kde.org/calligra/8a450ef60839cf77486d1bb9eb25b63ffcb1e468</a><br>>> >><br>>> >> diff --git a/libs/flake/KoToolManager.cpp b/libs/flake/KoToolManager.cpp<br>>> >> index 61e194c..16f817f 100644<br>>> >> --- a/libs/flake/KoToolManager.cpp<br>>> >> +++ b/libs/flake/KoToolManager.cpp<br>>> >> @@ -788,19 +788,24 @@ void KoToolManager::registerTools(KActionCollection<br>>> >> *ac, KoCanvasController *con return;<br>>> >><br>>> >>      }<br>>> >><br>>> >> +    // Actions available during the use of individual tools<br>>> >><br>>> >>      CanvasData *cd = d->canvasses.value(controller).first();<br>>> >>      foreach(KoToolBase *tool, cd->allTools) {<br>>> >><br>>> >>          QHash<QString, KAction*> actions = tool->actions();<br>>> >><br>>> >> -        QHash<QString, KAction*>::const_iterator<br>>> >> it(actions.constBegin());<br>>> >> -        for (; it != actions.constEnd(); ++it) {<br>>> >> -            if (!ac->action(it.key()))<br>>> >> -                ac->addAction(it.key(), it.value());<br>>> >> +        QHash<QString, KAction*>::const_iterator<br>>> >> action(actions.constBegin()); +        for (; action !=<br>>> >> actions.constEnd();<br>>> >> ++action) {<br>>> >> +            if (!ac->action(action.key()))<br>>> >> +                ac->addAction(action.key(), action.value());<br>>> >><br>>> >>          }<br>>> >><br>>> >>      }<br>>> >><br>>> >> +<br>>> >> +    // Actions used to switch tools; connect slot to keep button<br>>> >> tooltips<br>>> >> updated foreach(ToolHelper * th, d->tools) {<br>>> >><br>>> >>          ToolAction* action = new ToolAction(this, th->id(),<br>>> >>          th->toolTip(),<br>>> >><br>>> >> ac); action->setShortcut(th->shortcut());<br>>> >><br>>> >>          ac->addAction(th->id(), action);<br>>> >><br>>> >> +        th->setAction(action);<br>>> >> +        connect(action, SIGNAL(changed()), th, SLOT(actionUpdated()));<br>>> >><br>>> >>      }<br>>> >><br>>> >>  }<br>>> >><br>>> >> diff --git a/libs/flake/KoToolManager.h b/libs/flake/KoToolManager.h<br>>> >> index 6567346..fa12272 100644<br>>> >> --- a/libs/flake/KoToolManager.h<br>>> >> +++ b/libs/flake/KoToolManager.h<br>>> >> @@ -44,7 +44,7 @@ class QCursor;<br>>> >><br>>> >>  /// Struct for the createToolList return type.<br>>> >>  struct KoToolButton {<br>>> >><br>>> >> -    QToolButton *button;///< a newly created button.<br>>> >> +    QToolButton *button;    ///< a newly created button.<br>>> >><br>>> >>      QString section;        ///< The section the button wants to be in.<br>>> >>      int priority;           ///< Lower number (higher priority) means<br>>> >><br>>> >> coming first in the section. int buttonGroupId;      ///< An unique ID<br>>> >> for<br>>> >> this button as passed by changedTool() diff --git<br>>> >> a/libs/flake/KoToolManager_p.cpp b/libs/flake/KoToolManager_p.cpp index<br>>> >> bb0ab1a..c4d7d08 100644<br>>> >> --- a/libs/flake/KoToolManager_p.cpp<br>>> >> +++ b/libs/flake/KoToolManager_p.cpp<br>>> >> @@ -25,24 +25,33 @@<br>>> >><br>>> >>  #include <KoToolFactoryBase.h><br>>> >>  #include <QToolButton><br>>> >>  #include <kicon.h><br>>> >><br>>> >> +#include <klocale.h><br>>> >><br>>> >>  #include <QtGlobal> // for qrand()<br>>> >><br>>> >> -//   ************ ToolHelper **********<br>>> >> +/*    ************ ToolHelper **********<br>>> >> + * This class wrangles the tool factory, toolbox button and switch-tool<br>>> >> action + * for a single tool. It assumes the  will continue to live once<br>>> >> it<br>>> >> is created. + * (Hiding the toolbox is OK.)<br>>> >> + */<br>>> >> +<br>>> >><br>>> >>  ToolHelper::ToolHelper(KoToolFactoryBase *tool)<br>>> >><br>>> >> +    : m_toolFactory(tool),<br>>> >> +      m_uniqueId((int)qrand()),<br>>> >> +      button(0),<br>>> >> +      action(0)<br>>> >><br>>> >>  {<br>>> >><br>>> >> -    m_toolFactory = tool;<br>>> >> -    m_uniqueId = (int) qrand();<br>>> >><br>>> >>  }<br>>> >><br>>> >>  QToolButton* ToolHelper::createButton()<br>>> >>  {<br>>> >><br>>> >> -    QToolButton *but = new QToolButton();<br>>> >> -    but->setObjectName(m_toolFactory->id());<br>>> >> -    but->setIcon(KIcon(m_toolFactory->iconName()));<br>>> >> -    but->setToolTip(m_toolFactory->toolTip());<br>>> >> -    connect(but, SIGNAL(clicked()), this, SLOT(buttonPressed()));<br>>> >> -    return but;<br>>> >> +    button = new QToolButton();<br>>> >> +    button->setObjectName(m_toolFactory->id());<br>>> >> +    button->setIcon(KIcon(m_toolFactory->iconName()));<br>>> >> +    button->setToolTip(buttonToolTip());<br>>> >> +<br>>> >> +    connect(button, SIGNAL(clicked()), this, SLOT(buttonPressed()));<br>>> >> +    return button;<br>>> >><br>>> >>  }<br>>> >><br>>> >>  void ToolHelper::buttonPressed()<br>>> >><br>>> >> @@ -65,6 +74,20 @@ QString ToolHelper::toolTip() const<br>>> >><br>>> >>      return m_toolFactory->toolTip();<br>>> >><br>>> >>  }<br>>> >><br>>> >> +QString ToolHelper::buttonToolTip() const<br>>> >> +{<br>>> >> +  return shortcut().isEmpty() ?<br>>> >> +    i18nc("@info:tooltip", "%1", toolTip()) :<br>>> >> +    i18nc("@info:tooltip %2 is shortcut", "%1 (%2)", toolTip(),<br>>> >> +          shortcut().toString());<br>>> >> +}<br>>> >> +<br>>> >> +void ToolHelper::actionUpdated()<br>>> >> +{<br>>> >> +    if (button)<br>>> >> +        button->setToolTip(buttonToolTip());<br>>> >> +}<br>>> >> +<br>>> >><br>>> >>  KoToolBase *ToolHelper::createTool(KoCanvasBase *canvas) const<br>>> >>  {<br>>> >><br>>> >>      KoToolBase *tool = m_toolFactory->createTool(canvas);<br>>> >><br>>> >> @@ -86,9 +109,18 @@ int ToolHelper::priority() const<br>>> >><br>>> >>  KShortcut ToolHelper::shortcut() const<br>>> >>  {<br>>> >><br>>> >> +    if (action) {<br>>> >> +        return action->shortcut();<br>>> >> +    }<br>>> >> +<br>>> >><br>>> >>      return m_toolFactory->shortcut();<br>>> >><br>>> >>  }<br>>> >><br>>> >> +void ToolHelper::setAction(KAction *a)<br>>> >> +{<br>>> >> +    action = a;<br>>> >> +}<br>>> >> +<br>>> >><br>>> >>  //   ************ Connector **********<br>>> >>  Connector::Connector(KoShapeManager *parent)<br>>> >><br>>> >>          : QObject(parent),<br>>> >><br>>> >> diff --git a/libs/flake/KoToolManager_p.h b/libs/flake/KoToolManager_p.h<br>>> >> index b8ce539..e7e1b0f 100644<br>>> >> --- a/libs/flake/KoToolManager_p.h<br>>> >> +++ b/libs/flake/KoToolManager_p.h<br>>> >><br>>> >> @@ -127,19 +127,26 @@ public:<br>>> >>      int uniqueId() const {<br>>> >><br>>> >>          return m_uniqueId;<br>>> >><br>>> >>      }<br>>> >><br>>> >> -    /// wrapper around KoToolFactoryBase::shortcut()<br>>> >> +    /// KAction->shortcut() if it exists, otherwise<br>>> >> KoToolFactoryBase::shortcut() KShortcut shortcut() const;<br>>> >> +    /// Writes a tooltip for a button, appending the keyboard shortcut<br>>> >> if<br>>> >> we have one +    QString buttonToolTip() const;<br>>> >> +    /// Associate an action with this tool<br>>> >> +    void setAction(KAction *a);<br>>> >><br>>> >>  Q_SIGNALS:<br>>> >> -    /// emitted when one of the generated buttons was pressed.<br>>> >> +    /// Emitted when the generated toolbox button is pressed.<br>>> >><br>>> >>      void toolActivated(ToolHelper *tool);<br>>> >><br>>> >>  private Q_SLOTS:<br>>> >>      void buttonPressed();<br>>> >><br>>> >> +    void actionUpdated();<br>>> >><br>>> >>  private:<br>>> >>      KoToolFactoryBase *m_toolFactory;<br>>> >>      int m_uniqueId;<br>>> >><br>>> >> +    QToolButton *button;<br>>> >> +    KAction *action;<br>>> >><br>>> >>  };<br>>> >><br>>> >>  /// \internal<br>> _______________________________________________<br>> calligra-devel mailing list<br>> <a href="mailto:calligra-devel@kde.org">calligra-devel@kde.org</a><br>> <a href="https://mail.kde.org/mailman/listinfo/calligra-devel">https://mail.kde.org/mailman/listinfo/calligra-devel</a><br>><br><br>-- <br>regards, Jaroslaw Staniek<br><br>KDE:<br>: A world-wide network of software engineers, artists, writers, translators<br>: and facilitators committed to Free Software development - <a href="http://kde.org" target="_blank">http://kde.org</a><br>Calligra Suite:<br>: A graphic art and office suite - <a href="http://calligra.org" target="_blank">http://calligra.org</a><br>Kexi:<br>: A visual database apps builder - <a href="http://calligra.org/kexi" target="_blank">http://calligra.org/kexi</a><br>Qt Certified Specialist:<br>: <a href="http://www.linkedin.com/in/jstaniek" target="_blank">http://www.linkedin.com/in/jstaniek</a><br>