<div>The new endless loop (causing a stack overflow here when I resize systemsettings view) this time is in:</div><div>QListView::resizeEvent(QResizeEvent *e)</div><div>  that calls QAbstractItemView::resizeEvent(e);</div>
<div>QAbstractItemView::resizeEvent(QResizeEvent *event)</div><div>  that calls KCategorizedView::updateGeometries();</div><div>QFrame::setFrameRect(QRect const&)</div><div>  that calls QWidget::setContextsMargins(cr.left(), cr.top(), rect().right() - cr.right(), rect().bottom() - cr.bottom());</div>
<div>QWidget::setContestsMargin(int,int,int,int)</div><div>  that calls QCoreApplication::notifyInternal(receiver, event)</div><div>QAbstractScrollArea::setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy policy)</div><div>  that calls QAbstractScrollAreaPrivate::layoutChildren()</div>
<div><br></div><div>This time the infinite recursion is even harder (two squares with 8 squares inside each one).</div><div><br></div><div>In my machine, the infinite recursions seen until now (krunner and systemsettings) are gone with the attached patch.</div>
<div>(tested resizing them all I can).</div><div><br></div><div>Best Regards.<br></div><br><div class="gmail_quote">2011/12/8 Christoph Feck <span dir="ltr"><<a href="mailto:christoph@maxiom.de">christoph@maxiom.de</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">



 <div>
  <div style="font-family:Verdana,Arial,Helvetica,Sans-Serif"><div class="im">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border:1px #c9c399 solid">
    <tbody><tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/103335/" target="_blank">http://git.reviewboard.kde.org/r/103335/</a>
     </td>
    </tr>
   </tbody></table>
   <br>





</div><div class="im"><blockquote style="margin-left:1em;border-left:2px solid #d0d0d0;padding-left:10px">
 <p style="margin-top:0">On December 6th, 2011, 6:39 p.m., <b>Commit Hook</b> wrote:</p>
 <blockquote style="margin-left:1em;border-left:2px solid #d0d0d0;padding-left:10px">
  <pre style="white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word">This review has been submitted with commit 08325ba32b72326030004cc28430431193d82fc2 by Thomas Lübking to branch KDE/4.7.</pre>
 </blockquote>







</blockquote>

</div><pre style="white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word">This commit causes systemsettings to go into endless recursion, see <a href="http://privatepaste.com/0e43ad214c" target="_blank">http://privatepaste.com/0e43ad214c</a>

zemo on #plasma confirmed that reverting it fixes the regression.</pre><span class="HOEnZb"><font color="#888888">
<br>








<p>- Christoph</p></font></span><div class="im">


<br>
<p>On December 5th, 2011, 2:21 p.m., Thomas Lübking wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image:url('');background-repeat:repeat-x;border:1px black solid">
 <tbody><tr>
  <td>

<div>Review request for kdelibs, Rafael Fernández López and Jaime Torres Amate.</div>
<div>By Thomas Lübking.</div>


<p style="color:grey"><i>Updated Dec. 5, 2011, 2:21 p.m.</i></p>






<h1 style="color:#575012;font-size:10pt;margin-top:1.5em">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border:1px solid #b8b5a0">
 <tbody><tr>
  <td>
   <pre style="margin:0;padding:0;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word">Also see <a href="https://git.reviewboard.kde.org/r/103313/" target="_blank">https://git.reviewboard.kde.org/r/103313/</a>


QListView::updateGeometries() has it's own opinion on whether the scrollbars should be visible (valid range) or not
and triggers a (sometimes additionally timered) resize through ::layoutChildren()
<a href="http://qt.gitorious.org/qt/qt/blobs/4.7/src/gui/itemviews/qlistview.cpp#line1499" target="_blank">http://qt.gitorious.org/qt/qt/blobs/4.7/src/gui/itemviews/qlistview.cpp#line1499</a>
(the comment above the main block isn't all accurate, layoutChldren is called regardless of the policy)

As a result QListView and KCategorizedView occasionally started a race on the scrollbar visibility, effectively blocking the UI
So we prevent QListView from having an own opinion on the scrollbar visibility by
fixing it before calling the baseclass QListView::updateGeometries() and restoring the policy afterwards
</pre>  </td>
 </tr>
</tbody></table>


<h1 style="color:#575012;font-size:10pt;margin-top:1.5em">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border:1px solid #b8b5a0">
 <tbody><tr>
  <td>
   <pre style="margin:0;padding:0;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word">Yes, resizing the "kcmshell4 kwincompositing", "all effects" KPluginSelector with large scrollbar sizes (bespin/position indicator/32px; oxygen was often sufficient with the default size) after commit e91e5fed6b1aad365e12e919f430c3e8147552d3 (see <a href="https://git.reviewboard.kde.org/r/103165/" target="_blank">https://git.reviewboard.kde.org/r/103165/</a> ) was a reliable way to trigger the issue for me.
It also showed that resize/updateGeometries occured in pairs (ie 4calls forming  a block), what's never happened again with the patch.</pre>  </td>
 </tr>
</tbody></table>



<div style="margin-top:1.5em">
 <b style="color:#575012;font-size:10pt;margin-top:1.5em">Bugs: </b>


 <a href="http://bugs.kde.org/show_bug.cgi?id=213068" target="_blank">213068</a>, 

 <a href="http://bugs.kde.org/show_bug.cgi?id=287847" target="_blank">287847</a>


</div>


<h1 style="color:#575012;font-size:10pt;margin-top:1.5em">Diffs </h1>
<ul style="margin-left:3em;padding-left:0">

 <li>kdeui/itemviews/kcategorizedview.cpp <span style="color:grey">(46a1cde)</span></li>

 <li>kutils/kpluginselector.cpp <span style="color:grey">(ca0691d)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/103335/diff/" style="margin-left:3em" target="_blank">View Diff</a></p>




  </td>
 </tr>
</tbody></table>








  </div></div>
 </div>


</blockquote></div><br>