> 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 > >
