Review Request: fix infinite recurssion in kcategorizedview
Thomas Lübking
thomas.luebking at web.de
Mon Dec 5 14:14:13 GMT 2011
> On Dec. 4, 2011, 6:47 p.m., Thomas Lübking wrote:
> > Ok, i think i know what's wrong.
> > KCategorizedView::updateGeometries() calls QListView::updateGeometries() which 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() http://qt.gitorious.org/qt/qt/blobs/4.7/src/gui/itemviews/qlistview.cpp#line1499 - the comment above the main block isn't all accurate, layoutChldren is called regardless of the policy.
> >
> > My approach was then to prevent QListView from having an own opinion on the scrollbar visibility by fixing it before calling the baseclass QListView::updateGeometries()
> >
> >
> > // bug 213068 ------------------------------------------------------------
> > const Qt::ScrollBarPolicy verticalP = verticalScrollBarPolicy(), horizontalP = horizontalScrollBarPolicy();
> > setVerticalScrollBarPolicy(verticalScrollBar()->isVisibleTo(this) ? Qt::ScrollBarAlwaysOn : Qt::ScrollBarAlwaysOff);
> > setHorizontalScrollBarPolicy(horizontalScrollBar()->isVisibleTo(this) ? Qt::ScrollBarAlwaysOn : Qt::ScrollBarAlwaysOff);
> > // /bug 213068 ------------------------------------------------------------
> >
> > QListView::updateGeometries();
> >
> > // bug 213068 ------------------------------------------------------------
> > setVerticalScrollBarPolicy(verticalP);
> > setHorizontalScrollBarPolicy(horizontalP);
> > // /bug 213068 ------------------------------------------------------------
> >
> > in addition i ensure the horizontal range was also set on the early skip
> >
> > const int rowCount = d->proxyModel->rowCount();
> > if (!rowCount) {
> > horizontalScrollBar()->setRange(0, 0);
> > verticalScrollBar()->setRange(0, 0);
> > return;
> > }
> >
> > but i actually doubt this is relevant.
> >
> > However, i cannot reproduce the issue (commenting the fixed policies in kpluginselector.cpp) and as a bonus kpluginselector resizes faster (resize/geometryUpdate came in pairs here before, not tested with the patch but it feels faster ;-)
> >
> > Can please anyone attempt to confirm or deny the approach?
>
> Jaime Torres Amate wrote:
> If your patch includes your comment, you have my Ship it!.
Thanks, I'll take that as a "works for me" =)
https://git.reviewboard.kde.org/r/103335/
- Thomas
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/103313/#review8704
-----------------------------------------------------------
On Dec. 4, 2011, 8:42 a.m., Jaime Torres Amate wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/103313/
> -----------------------------------------------------------
>
> (Updated Dec. 4, 2011, 8:42 a.m.)
>
>
> Review request for kdelibs and Rafael Fernández López.
>
>
> Description
> -------
>
> Basically, what I do is:
> If there are one or zero columns, hide the horizontalScrollBar until it is needed. (it has worked in the past, but in another file).
> Apply the same strategy with files.
>
> Additional stuff:
> Moved the common calculus of itemSize outside of the if then else.
>
>
> This addresses bugs 213068 and 287847.
> http://bugs.kde.org/show_bug.cgi?id=213068
> http://bugs.kde.org/show_bug.cgi?id=287847
>
>
> Diffs
> -----
>
> kdeui/itemviews/kcategorizedview.cpp 46a1cde
> kutils/kpluginselector.cpp ca0691d
>
> Diff: http://git.reviewboard.kde.org/r/103313/diff/diff
>
>
> Testing
> -------
>
> Krunner config does not loop (neither kgetnewstuff from kstars). I can not test with amarok (I've hit by an amarok start bug).
> Please, test with other programs.
>
>
> Thanks,
>
> Jaime Torres Amate
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20111205/acd17ac8/attachment.htm>
More information about the kde-core-devel
mailing list