<table><tr><td style="">rjvbb created this revision.<br />rjvbb added a reviewer: Framework: Syntax Highlighting.<br />Restricted Application added a project: Plasma.<br />Restricted Application added a subscriber: plasma-devel.<br />rjvbb requested review of this revision.
</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/D14000">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>See <a href="https://bugs.kde.org/show_bug.cgi?id=396287" class="remarkup-link" target="_blank" rel="noreferrer">https://bugs.kde.org/show_bug.cgi?id=396287</a></p>

<p>Setting <tt style="background: #ebebeb; font-size: 13px;">QT_QUICK_CONTROLS_STYLE=org.kde.desktop</tt> used to be safe but has started the cause applications to crash. Or I just never ran into what seem to be random (from a Joe User experience) but in fact are QGuiApplication-based applications.</p>

<p>This patch presents a proof-of-concept fix that makes it safe to set <tt style="background: #ebebeb; font-size: 13px;">QT_QUICK_CONTROLS_STYLE</tt> or whatever other options there are to use the QQC2 desktop style in all applications that use QuickControls2.<br />
The current implementation creates a local instance of Qt's built-in Fusion style, and probably doesn't need to create a new instance for each new KQuickStyleItem instance. Being a Tier3 framework it should be possible to fetch the current desktop style through KConfig, in which case creating a new QStyle instance would be (more) justified. There's probably some optimisation to be done here though I'm not convinced it will make any difference in practice, in the general context of using QtQuick.</p>

<p>An alternative approach would be to do the programmatic equivalent of the command-line override (e.g. <tt style="background: #ebebeb; font-size: 13px;">quickcontrols2/gallery/gallery -style Default</tt>) but I have not yet been able to figure out if it is possible to change the QQuickStyle at this point.</p></div></div><br /><div><strong>TEST PLAN</strong><div><p>Tested with</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);">> env QT_QUICK_CONTROLS_STYLE=org.kde.desktop /path/to/qt5-examples/quickcontrols2/gallery/gallery</pre></div>

<p>before: immediate crash because the plugin dereferences a NULL qApp->style() without flinching<br />
after: practically normal behaviour that is certainly preferable to crashing due to a potential security exploit.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R858 Qt Quick Controls 2: Desktop Style</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D14000">https://phabricator.kde.org/D14000</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>plugin/kquickstyleitem.cpp<br />
plugin/kquickstyleitem_p.h</div></div></div><br /><div><strong>To: </strong>rjvbb, Framework: Syntax Highlighting<br /><strong>Cc: </strong>plasma-devel, ragreen, Pitel, ZrenBot, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart<br /></div>