<table><tr><td style="">ervin added a comment.
</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/D28194">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #8C98B8;
          color: #6B748C;
          font-style: italic;
          margin: 4px 0 12px 0;
          padding: 8px 12px;
          background-color: #F8F9FC;">
<div style="font-style: normal;
          padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D28194#632629" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">D28194#632629</a>, <a href="https://phabricator.kde.org/p/apol/" style="
              border-color: #f1f7ff;
              color: #19558d;
              background-color: #f1f7ff;
                border: 1px solid transparent;
                border-radius: 3px;
                font-weight: bold;
                padding: 0 4px;">@apol</a> wrote:</div>
<div style="margin: 0;
          padding: 0;
          border: 0;
          color: rgb(107, 116, 140);"><p>Fixing QIcon would make sense but I'd say getting this in is not the worst thing either.</p></div>
</blockquote>

<p>I don't think it's QIcon's fault to be honest. The pattern used in several places of <tt style="background: #ebebeb; font-size: 13px;">(icon.name || icon.source)</tt> doesn't help, it makes the lower layer loose the information of an icon specified by name (thus going through theme loading) or by URL (thus going through direct loading). Due to that the lower layer ends up having code trying to guess in which situation it is.</p></div></div><br /><div><strong>INLINE COMMENTS</strong><div><div style="margin: 6px 0 12px 0;"><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D28194#inline-168911">View Inline</a><span style="color: #4b4d51; font-weight: bold;">kquickstyleitem.cpp:182</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">        <span style="color: #aa4000">const</span> <span class="n">QVariant</span> <span class="n">icon</span> <span style="color: #aa2211">=</span> <span class="n">m_properties</span><span class="p">[</span><span class="n">QStringLiteral</span><span class="p">(</span><span style="color: #766510">"icon"</span><span class="p">)];</span>
</div><div style="padding: 0 8px; margin: 0 4px; ">        <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">icon</span><span class="p">.</span><span class="n">canConvert</span><span style="color: #aa2211"><</span><span class="n">QIcon</span><span style="color: #aa2211">></span><span class="p">())</span> <span class="p">{</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Note that this construct is duplicated three times in that file. It really calls for having a findIcon like that:</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);">QIcon KQuickStyleItem::findIcon(const QVariant &iconProp) const
{
    if (iconProp.canConvert<QIcon>()) {
        return iconProp.value<QIcon>();
    } else if (iconProp.canConvert<QString>()) {
        const auto iconId = iconProp.toString();
        if (iconId.startsWith(QLatin1Char('/')) || iconId.startsWith(QStringLiteral(":/"))) {
            return QIcon(iconId);
        } else if (iconId.startsWith(QStringLiteral("file:"))) {
            return QIcon(QUrl(iconId).toLocalFile());
        } else if (iconId.startsWith(QStringLiteral("qrc:"))) {
            return QIcon(QLatin1Char(':') + QUrl(iconId).path());
        } else {
            return m_theme->iconFromTheme(iconId, m_properties[QStringLiteral("iconColor")].value<QColor>());
        }
    } else {
        return QIcon();
    }
}</pre></div>

<p style="padding: 0; margin: 8px;">And then using it for setting opt->icon and opt->currentIcon (combobox case). Yes, I did that locally and that definitely helped.</p></div></div></div></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/D28194">https://phabricator.kde.org/D28194</a></div></div><br /><div><strong>To: </strong>nicolasfella, Plasma, mart, ervin<br /><strong>Cc: </strong>apol, plasma-devel, Orage, LeGast00n, The-Feren-OS-Dev, cblack, jraleigh, zachus, fbampaloukas, ragreen, ZrenBot, ngraham, himcesjf, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, ahiemstra, mart<br /></div>