> On May 1, 2015, 9:24 p.m., David Faure wrote:
> > The conditional comes from 50a2283112225e2db4673e41d12411e8664865fa in 
> > kdelibs.git where qMetaTypeId<KShortcut> was ported to 
> > qMetaTypeId<QList<QKeySequence> >. However that porting looks wrong indeed, 
> > KShortcut was UserType in QVariant while, from what you say, the property 
> > is now just one QKeySequence, and QKeySequence is a builtin QVariant type.
> > 
> > So it seems to me that you can remove the old conditional and just use 
> > yours instead. That works in your tests, right?
> > No point in keeping possibly-wrongly-ported unused code.

Ah that's what it's from. Thankyou for solving that mystery.

Confirmed the fix without the old condition, removed it.


- Lindsay


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/123508/#review79764
-----------------------------------------------------------


On May 2, 2015, 12:55 a.m., Lindsay Roberts wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/123508/
> -----------------------------------------------------------
> 
> (Updated May 2, 2015, 12:55 a.m.)
> 
> 
> Review request for KDE Frameworks and David Faure.
> 
> 
> Bugs: 337131, 339243, 340803, and 345411
>     https://bugs.kde.org/show_bug.cgi?id=337131
>     https://bugs.kde.org/show_bug.cgi?id=339243
>     https://bugs.kde.org/show_bug.cgi?id=340803
>     https://bugs.kde.org/show_bug.cgi?id=345411
> 
> 
> Repository: kxmlgui
> 
> 
> Description
> -------
> 
> When a user configures both a primary and alternate shortcut for an action, 
> they were lost on subsequent load of the app/part .rc file.
> 
> These values are persisted in the .rc file as two key sequence strings 
> separated by "; " -- the format understood by `QKeySequence::listFromString`. 
> When these files are reparsed, the current execution flow simply calls 
> `QObject::setProperty("shortcut", semicolonSeparatedString)`, which is 
> `Q_PROPERTY` bound in QAction to `setShortcut(QKeySequence)` -- invoking the 
> (single) QKeySequence constructor. The embedded semicolon and secondary 
> shortcut seem to break this constructor.
> 
> There is another specific flow in `KXMLGUIFactoryPrivate::configureAction`; 
> one that specifically calls
>     action->setShortcuts(QKeySequence::listFromString(attribute.value()));
> 
> but it was conditionalised by: 
> 
>     propertyType == QVariant::UserType && 
> action->property(attrName.toLatin1().constData()).userType() == 
> qMetaTypeId<QList<QKeySequence> >()
> 
> I have not been able to track down in history when that conditional would've 
> run true for the QAction property `"shortcut"`, QVariant::KeySequence was 
> added Nov 2011, and the conditional has been there since at least the 
> monolithic git split Dec 2013.
> 
> Nor have I been able to track down any recent changes on the Qt side that 
> would've implied the QKeySequence string constructor would've worked for 
> multiple shortcuts in the recent past.
> 
> In any case, the fix is simply to add a second conditional - matching on 
> QVariant::KeySequence.
> 
> 
> Diffs
> -----
> 
>   autotests/kxmlgui_unittest.cpp 404d304 
>   src/kxmlguifactory.cpp aeeb242 
>   autotests/kxmlgui_unittest.h fa2d7fb 
> 
> Diff: https://git.reviewboard.kde.org/r/123508/diff/
> 
> 
> Testing
> -------
> 
> Primarily using trunk Konsole - saving/loading/using multiple/single 
> shortcuts.
> 
> 
> Thanks,
> 
> Lindsay Roberts
> 
>

_______________________________________________
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel

Reply via email to