You can assign a QAction as "action", this way you can just pass it e.g. plasmoid.action("configure").
However, when assigning a null action as can happen with kiosk restrictions, it would crash
as it assigns m_action the nullptr but never checks for that.
This patch ensures we always have a QAction, creating a new empty one, if neccessary.
Also deletes our own action if an external one is assigned
Differential Revision: https://phabricator.kde.org/D6608
Summary:
Otherwise if anyone used setAction it would be missing a very important
connect.
Test Plan: Compiled
Reviewers: #plasma
Subscribers: plasma-devel, #frameworks
Tags: #plasma, #frameworks
Differential Revision: https://phabricator.kde.org/D4758
This way, we can cover string and QIcon assignments transparently,
another backwards compatibility fix, and easier thing in Plasma2: Now
the user doesn't have to worry about creating QIcons, but can just
assign the icon name, and it will get loaded from the theme. Models that
provide QIcons (such as QStandardItems) now work correctly with
PlasmaCore.MenuItems.
In MenuItem, we can't inherit QAction anymore (our MenuItem has to be a
QQuickItem), so we need to aggregate, which means adding glue API.
Positioning code is disabled, icons broken, but a QMenu with our items
inside shows up and is works.
All cpp code moves into the src/ subdirectory, as the Frameworks policy
suggests.
Directory structure should now be in line with other, future frameworks.