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

Review request for KDE Frameworks.


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
-----

  src/kxmlguifactory.cpp aeeb242 

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