<table><tr><td style="">kossebau 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/D15140">View Revision</a></tr></table><br /><div><div><p>First round of code feedback. Still need to check whether kxmlgui is fine with us twisting the generated QMenu behind its back, or if that will confuse things.</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/D15140#inline-82825">View Inline</a><span style="color: #4b4d51; font-weight: bold;">mainwindow_p.cpp:88</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(151, 234, 151, .6);"><span style="color: #aa4000">void</span> <span class="n">sortMenu</span><span class="p">(</span><span class="n">QMenu</span><span style="color: #aa2211">*</span> <span class="n">menu</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span class="p">{</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">-> sortMenuAlphabetically</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/D15140#inline-82824">View Inline</a><span style="color: #4b4d51; font-weight: bold;">mainwindow_p.cpp:125</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(151, 234, 151, .6);">    <span style="color: #aa4000">const</span> <span style="color: #aa4000">auto</span> <span class="n">info</span> <span style="color: #aa2211">=</span> <span class="n">Core</span><span style="color: #aa2211">::</span><span class="n">self</span><span class="p">()</span><span style="color: #aa2211">-></span><span class="n">pluginController</span><span class="p">()</span><span style="color: #aa2211">-></span><span class="n">pluginInfo</span><span class="p">(</span><span class="n">plugin</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">category</span><span class="p">()</span> <span style="color: #aa2211">==</span> <span class="n">QStringLiteral</span><span class="p">(</span><span style="color: #766510">"Analyzers"</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;">Please add a comment in the code why this is done, like:</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);">// Ensure alphabetical order in "Analzye Current * With" submenus</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/D15140#inline-82820">View Inline</a><span style="color: #4b4d51; font-weight: bold;">mainwindow_p.cpp:127</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(151, 234, 151, .6);">    <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">category</span><span class="p">()</span> <span style="color: #aa2211">==</span> <span class="n">QStringLiteral</span><span class="p">(</span><span style="color: #766510">"Analyzers"</span><span class="p">))</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">static</span> <span style="color: #aa4000">auto</span> <span class="n">fileMenuAction</span> <span style="color: #aa2211">=</span> <span class="n">m_mainWindow</span><span style="color: #aa2211">-></span><span class="n">findChild</span><span style="color: #aa2211"><</span><span class="n">QAction</span><span style="color: #aa2211">*></span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span style="color: #766510">"analyze_file"</span><span class="p">));</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">fileMenuAction</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">why static? that might be fragile, there is no promise in the kxmlgui API that submenu instances and their actions persist all the time, or?</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/D15140#inline-82821">View Inline</a><span style="color: #4b4d51; font-weight: bold;">mainwindow_p.cpp:128</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(151, 234, 151, .6);">        <span style="color: #aa4000">static</span> <span style="color: #aa4000">auto</span> <span class="n">fileMenuAction</span> <span style="color: #aa2211">=</span> <span class="n">m_mainWindow</span><span style="color: #aa2211">-></span><span class="n">findChild</span><span style="color: #aa2211"><</span><span class="n">QAction</span><span style="color: #aa2211">*></span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span style="color: #766510">"analyze_file"</span><span class="p">));</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">fileMenuAction</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">fileMenuAction</span><span style="color: #aa2211">-></span><span class="n">menu</span><span class="p">());</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Analyzer plugins are not required to add an action to the main menu, so if there is no plugin which added an action to the submenu, this assert will wrongly fail, no?<br />
So for what I understand no menu/action should be an expected condition and normally handled by skipping.</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/D15140#inline-82822">View Inline</a><span style="color: #4b4d51; font-weight: bold;">mainwindow_p.cpp:131</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(151, 234, 151, .6);">        <span style="color: #aa4000">static</span> <span style="color: #aa4000">auto</span> <span class="n">projectMenuAction</span> <span style="color: #aa2211">=</span> <span class="n">m_mainWindow</span><span style="color: #aa2211">-></span><span class="n">findChild</span><span style="color: #aa2211"><</span><span class="n">QAction</span><span style="color: #aa2211">*></span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span style="color: #766510">"analyze_project"</span><span class="p">));</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">projectMenuAction</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">static?</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/D15140#inline-82823">View Inline</a><span style="color: #4b4d51; font-weight: bold;">mainwindow_p.cpp:132</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(151, 234, 151, .6);">        <span style="color: #aa4000">static</span> <span style="color: #aa4000">auto</span> <span class="n">projectMenuAction</span> <span style="color: #aa2211">=</span> <span class="n">m_mainWindow</span><span style="color: #aa2211">-></span><span class="n">findChild</span><span style="color: #aa2211"><</span><span class="n">QAction</span><span style="color: #aa2211">*></span><span class="p">(</span><span class="n">QStringLiteral</span><span class="p">(</span><span style="color: #766510">"analyze_project"</span><span class="p">));</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">projectMenuAction</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">projectMenuAction</span><span style="color: #aa2211">-></span><span class="n">menu</span><span class="p">());</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">See above, no action could be expected.</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R32 KDevelop</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D15140">https://phabricator.kde.org/D15140</a></div></div><br /><div><strong>To: </strong>antonanikin, KDevelop<br /><strong>Cc: </strong>kossebau, kdevelop-devel, antismap, iodelay, vbspam, geetamc, Pilzschaf, akshaydeo, surgenight, arrowd<br /></div>