<table><tr><td style="">mwolff requested changes to this revision.<br />mwolff added inline comments.<br />This revision now requires changes to proceed.
</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/D4483" rel="noreferrer">View Revision</a></tr></table><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/D4483#inline-17990" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">useswidget.cpp:160</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: #d0ffd0;"> <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">highlight</span><span class="p">)</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span class="n">m_label</span><span style="color: #aa2211">-></span><span class="n">setText</span><span class="p">(</span><span class="n">m_label</span><span style="color: #aa2211">-></span><span class="n">text</span><span class="p">().</span><span class="n">replace</span><span class="p">(</span><span style="color: #766510">"background-color:#fbfa96"</span><span class="p">,</span> <span style="color: #766510">"background-color:#fb96f2"</span><span class="p">));</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span class="n">m_isHighlighted</span> <span style="color: #aa2211">=</span> <span style="color: #304a96">true</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">this is pretty brittle, please introduce free functions in an anonymous namespace that return a QColor for the active and inactive color, then use their names here. I simply guess that the hashes you use here are those of the QColors used in highlightAndEscapeUseText?</p></div></div><br /><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/D4483#inline-17989" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">useswidget.cpp:162</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: #d0ffd0;"> <span class="n">m_isHighlighted</span> <span style="color: #aa2211">=</span> <span style="color: #304a96">true</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span class="p">}</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span style="color: #aa4000">else</span> <span class="p">{</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">style: join with next line</p></div></div><br /><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/D4483#inline-17988" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">useswidget.h:52</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: #d0ffd0;"> <span style="color: #aa4000">void</span> <span style="color: #004012">setHighlighted</span><span class="p">(</span><span style="color: #aa4000">bool</span> <span class="n">highlight</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span style="color: #aa4000">bool</span> <span style="color: #004012">isHighlighted</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span style="color: #aa4000">void</span> <span style="color: #004012">activateLink</span><span class="p">();</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">const</p></div></div><br /><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/D4483#inline-17994" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">contextbrowserview.cpp:252</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: #d0ffd0;"> <span style="color: #aa4000">int</span> <span class="n">index</span> <span style="color: #aa2211">=</span> <span class="n">selectedUseIndex</span><span class="p">(</span><span class="n">uses</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span class="n">QPointer</span><span style="color: #aa2211"><</span><span class="n">OneUseWidget</span><span style="color: #aa2211">></span> <span class="n">use</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">this is conceptually bad, esp. performance wise</p>
<ul class="remarkup-list">
<li class="remarkup-list-item">you build a list of all uses</li>
<li class="remarkup-list-item">then you iterate that list to find the selected one</li>
<li class="remarkup-list-item">if there is no selected one you select the first one</li>
<li class="remarkup-list-item">otherwise you unselect the current one and select the next one</li>
</ul>
<p style="padding: 0; margin: 8px;">you essentially don't need the list of all uses for this at all.</p>
<p style="padding: 0; margin: 8px;">rather, what you want is a free function taking in an enum that decides whether to select the next or previous item and then do it in the loop. no temporary list required, only the first, previous, current item needs to be remembered, and then depending on</p>
<p style="padding: 0; margin: 8px;">if this is too complicated for you, at least find the index of the "current" one already in allUses to remove the need for selectedUseIndex altogether (return a struct of the list of OneUseWidget* and the pointer to the current one)</p></div></div><br /><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/D4483#inline-17995" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">contextbrowserview.cpp:304</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: #d0ffd0;"> <span class="n">QPointer</span><span style="color: #aa2211"><</span><span class="n">AbstractNavigationWidget</span><span style="color: #aa2211">></span> <span class="n">abstractNaviWidget</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">dynamic_cast</span><span style="color: #aa2211"><</span><span class="n">AbstractNavigationWidget</span><span style="color: #aa2211">*></span><span class="p">(</span><span style="color: #aa4000">this</span><span style="color: #aa2211">-></span><span class="n">navigationWidget</span><span class="p">());</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span style="color: #aa4000">if</span> <span class="p">(</span><span style="color: #aa2211">!</span><span class="n">abstractNaviWidget</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;">style:</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);">auto abstractNaviWidget = dynamic_cast<AbstractNavigationWidget*>(navigationWidget());</pre></div>
<p style="padding: 0; margin: 8px;">don't put everything into QPointer, there's no need for it in this patch as far as I can see</p></div></div><br /><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/D4483#inline-17998" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">contextbrowserview.cpp:314</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: #d0ffd0;"> <span class="n">foreach</span> <span class="p">(</span><span class="n">QWidget</span><span style="color: #aa2211">*</span> <span class="n">uw</span><span class="p">,</span> <span class="n">usesWidget</span><span style="color: #aa2211">-></span><span class="n">items</span><span class="p">())</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span class="n">QPointer</span><span style="color: #aa2211"><</span><span class="n">TopContextUsesWidget</span><span style="color: #aa2211">></span> <span class="n">topContext</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">dynamic_cast</span><span style="color: #aa2211"><</span><span class="n">TopContextUsesWidget</span><span style="color: #aa2211">*></span><span class="p">(</span><span class="n">uw</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">please don't use foreach in new code, use C++11 range-based-for</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);">for (auto item : usesWidget->items()) {</pre></div></div></div><br /><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/D4483#inline-17996" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">contextbrowserview.cpp:316</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: #d0ffd0;"> <span class="n">QPointer</span><span style="color: #aa2211"><</span><span class="n">TopContextUsesWidget</span><span style="color: #aa2211">></span> <span class="n">topContext</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">dynamic_cast</span><span style="color: #aa2211"><</span><span class="n">TopContextUsesWidget</span><span style="color: #aa2211">*></span><span class="p">(</span><span class="n">uw</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">topContext</span><span class="p">)</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span class="n">foreach</span> <span class="p">(</span><span class="n">QWidget</span><span style="color: #aa2211">*</span> <span class="n">nl</span><span class="p">,</span> <span class="n">topContext</span><span style="color: #aa2211">-></span><span class="n">items</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;">reduce indent width by instead doing</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);">if (!topContext) {
continue;
}</pre></div></div></div><br /><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/D4483#inline-17999" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">contextbrowserview.cpp:317</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: #d0ffd0;"> <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">topContext</span><span class="p">)</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span class="n">foreach</span> <span class="p">(</span><span class="n">QWidget</span><span style="color: #aa2211">*</span> <span class="n">nl</span><span class="p">,</span> <span class="n">topContext</span><span style="color: #aa2211">-></span><span class="n">items</span><span class="p">())</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span class="n">QPointer</span><span style="color: #aa2211"><</span><span class="n">NavigatableWidgetList</span><span style="color: #aa2211">></span> <span class="n">list</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">dynamic_cast</span><span style="color: #aa2211"><</span><span class="n">NavigatableWidgetList</span><span style="color: #aa2211">*></span><span class="p">(</span><span class="n">nl</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">dito, rnage-based-for</p></div></div><br /><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/D4483#inline-17997" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">contextbrowserview.cpp:319</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: #d0ffd0;"> <span class="n">QPointer</span><span style="color: #aa2211"><</span><span class="n">NavigatableWidgetList</span><span style="color: #aa2211">></span> <span class="n">list</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">dynamic_cast</span><span style="color: #aa2211"><</span><span class="n">NavigatableWidgetList</span><span style="color: #aa2211">*></span><span class="p">(</span><span class="n">nl</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">list</span><span class="p">)</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span class="n">foreach</span> <span class="p">(</span><span class="n">QWidget</span><span style="color: #aa2211">*</span> <span class="n">ou</span><span class="p">,</span> <span class="n">list</span><span style="color: #aa2211">-></span><span class="n">items</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;">dito, reduce indent width</p></div></div><br /><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/D4483#inline-17993" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">contextbrowserview.cpp:335</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: #d0ffd0;"><span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span style="color: #aa4000">for</span><span class="p">(</span><span style="color: #aa4000">int</span> <span class="n">i</span> <span style="color: #aa2211">=</span> <span style="color: #601200">0</span><span class="p">;</span> <span class="n">i</span> <span style="color: #aa2211"><</span> <span class="n">uses</span><span class="p">.</span><span class="n">count</span><span class="p">();</span> <span class="n">i</span><span style="color: #aa2211">++</span><span class="p">)</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span class="n">QPointer</span><span style="color: #aa2211"><</span><span class="n">OneUseWidget</span><span style="color: #aa2211">></span> <span class="n">use</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">dynamic_cast</span><span style="color: #aa2211"><</span><span class="n">OneUseWidget</span><span style="color: #aa2211">*></span><span class="p">(</span><span class="n">uses</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">replace manual loop:</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);">auto it = std::find_if(uses.begin(), uses.end(), [](QWidget* widget) -> bool {
if (auto use = qobject_cast<OneUseWidget*>(widget)) {
return use->isHighlighted();
}
return false;
});
return (it == uses.end()) ? -1 : std::distance(uses.begin(), it);</pre></div></div></div><br /><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/D4483#inline-17991" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">contextbrowserview.h:97</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">void</span> <span style="color: #004012">resetWidget</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span class="n">QList</span><span style="color: #aa2211"><</span><span class="n">QWidget</span><span style="color: #aa2211">*></span> <span class="n">allUses</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span style="color: #aa4000">int</span> <span style="color: #004012">selectedUseIndex</span><span class="p">(</span><span class="n">QList</span><span style="color: #aa2211"><</span><span class="n">QWidget</span><span style="color: #aa2211">*></span> <span class="n">uses</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">const</p></div></div><br /><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/D4483#inline-17992" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">contextbrowserview.h:98</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: #d0ffd0;"> <span class="n">QList</span><span style="color: #aa2211"><</span><span class="n">QWidget</span><span style="color: #aa2211">*></span> <span class="n">allUses</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: #d0ffd0;"> <span style="color: #aa4000">int</span> <span style="color: #004012">selectedUseIndex</span><span class="p">(</span><span class="n">QList</span><span style="color: #aa2211"><</span><span class="n">QWidget</span><span style="color: #aa2211">*></span> <span class="n">uses</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">const& the arg and move out of the class into a free function in an anon namespace in the .cpp file</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R33 KDevPlatform</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D4483" rel="noreferrer">https://phabricator.kde.org/D4483</a></div></div><br /><div><strong>EMAIL PREFERENCES</strong><div><a href="https://phabricator.kde.org/settings/panel/emailpreferences/" rel="noreferrer">https://phabricator.kde.org/settings/panel/emailpreferences/</a></div></div><br /><div><strong>To: </strong>dporobic, mwolff<br /><strong>Cc: </strong>kdevelop-devel, KDevelop<br /></div>