<table><tr><td style="">broulik created this revision.<br />Restricted Application added projects: Plasma, Frameworks.<br />Restricted Application added subscribers: Frameworks, plasma-devel.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D6608" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>You can assign a <tt style="background: #ebebeb; font-size: 13px;">QAction</tt> as "action", this way you can just pass it e.g. <tt style="background: #ebebeb; font-size: 13px;">plasmoid.action("configure")</tt>.<br />
However, when assigning a <tt style="background: #ebebeb; font-size: 13px;">null</tt> action as can happen with kiosk restrictions, it would crash as it assigns <tt style="background: #ebebeb; font-size: 13px;">m_action</tt> the <tt style="background: #ebebeb; font-size: 13px;">nullptr</tt> but never checks for that.<br />
This patch ensures we always have a <tt style="background: #ebebeb; font-size: 13px;">QAction</tt>, keeping the one we created ourselves, if neccessary.<br />
Also deletes our own action if an external one is assigned</p></div></div><br /><div><strong>TEST PLAN</strong><div><p>Created a menu and applied <tt style="background: #ebebeb; font-size: 13px;">plasma/plasmashell/unlockedDesktop=false</tt> and opened it, no longer crashes:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">PlasmaComponents.ContextMenu {
    id: contextMenu

    PlasmaComponents.MenuItem {
        action: plasmoid.action("configure")
    }
}</pre></div>

<p>Manual test has a new button to test this.<br />
<a href="https://phabricator.kde.org/F3808090" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">F3808090: Screenshot_20170710_151842.png</a></p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R242 Plasma Framework (Library)</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D6608" rel="noreferrer">https://phabricator.kde.org/D6608</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>src/declarativeimports/plasmacomponents/qmenuitem.cpp<br />
src/declarativeimports/plasmacomponents/qmenuitem.h<br />
tests/components/menu.qml</div></div></div><br /><div><strong>To: </strong>broulik, Plasma<br /><strong>Cc: </strong>plasma-devel, Frameworks, ZrenBot, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart, lukas<br /></div>