<table><tr><td style="">iasensio 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/D29775">View Revision</a></tr></table><br /><div><div><p>With ~20 rules I still can see a noticeable lag, although it's slightly better.</p>

<p>I think the main time consuming operation is the conversion between <tt style="background: #ebebeb; font-size: 13px;">RuleSettings</tt> and <tt style="background: #ebebeb; font-size: 13px;">Rules</tt> objects.<br />
This happens in two interfaces, once on general loading/saving: <tt style="background: #ebebeb; font-size: 13px;">RuleBookSettings->rules()</tt>, and the other on editing/saving a specific rule.<br />
I'd like to try handling <tt style="background: #ebebeb; font-size: 13px;">RuleSettings</tt> objects directly to see if it reduces the loading/editing times.</p>

<p>About this particular improvement, I'd also like to go for it but there is the problem of where to register the qml types. <br />
Would a specific file guarded by <tt style="background: #ebebeb; font-size: 13px;">#ifdef</tt> work to execute this lines depending on the executable?<br />
<tt style="background: #ebebeb; font-size: 13px;">kwin_rules_dialog</tt> (launching from the appmenu) needs a full re-write anyway, since it's a QML/QWidget frankestein and also doesn't work on wayland (<a href="https://bugs.kde.org/show_bug.cgi?id=421405" class="remarkup-link" target="_blank" rel="noreferrer">https://bugs.kde.org/show_bug.cgi?id=421405</a>)</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/D29775#inline-170461">View Inline</a><span style="color: #4b4d51; font-weight: bold;">rulesmodel.cpp:47</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; background: rgba(251, 175, 175, .7);">                                                 <span class="n">QStringLiteral</span><span class="p">(</span><span style="color: #766510">"Do not create objects of type RulesModel"</span><span class="p">));</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">
</div><div style="padding: 0 8px; margin: 0 4px; ">    <span class="n">populateRuleList</span><span class="p">();</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">There is a problem moving this out of here, in that <tt style="background: #ebebeb; font-size: 13px;">kwin_rules_dialog</tt> executable will not find it.</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R108 KWin</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D29775">https://phabricator.kde.org/D29775</a></div></div><br /><div><strong>To: </strong>broulik, KWin, iasensio<br /><strong>Cc: </strong>kwin, Orage, cacarry, LeGast00n, The-Feren-OS-Dev, cblack, jraleigh, zachus, fbampaloukas, mkulinski, ragreen, jackyalcine, iodelay, crozbo, bwowk, ZrenBot, ngraham, alexeymin, himcesjf, lesliezhai, ali-mohamed, hardening, romangg, jensreuterberg, abetts, sebas, apol, ahiemstra, mart<br /></div>