From kde-core-devel Mon Dec 05 14:21:11 2011 From: =?utf-8?q?Thomas_L=C3=BCbking?= Date: Mon, 05 Dec 2011 14:21:11 +0000 To: kde-core-devel Subject: Review Request: Fix KCategorizedView race Message-Id: <20111205142111.26176.55284 () vidsolbach ! de> X-MARC-Message: https://marc.info/?l=kde-core-devel&m=132309497832190 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--===============8643111842323680846==" --===============8643111842323680846== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://git.reviewboard.kde.org/r/103335/ ----------------------------------------------------------- Review request for kdelibs, Rafael Fern=C3=A1ndez L=C3=B3pez and Jaime Torr= es Amate. Description ------- Also see https://git.reviewboard.kde.org/r/103313/ QListView::updateGeometries() has it's own opinion on whether the scrollbar= s should be visible (valid range) or not and triggers a (sometimes additionally timered) resize through ::layoutChil= dren() http://qt.gitorious.org/qt/qt/blobs/4.7/src/gui/itemviews/qlistview.cpp#lin= e1499 (the comment above the main block isn't all accurate, layoutChldren is call= ed regardless of the policy) As a result QListView and KCategorizedView occasionally started a race on t= he scrollbar visibility, effectively blocking the UI So we prevent QListView from having an own opinion on the scrollbar visibil= ity by fixing it before calling the baseclass QListView::updateGeometries() and re= storing the policy afterwards This addresses bugs 213068 and 287847. http://bugs.kde.org/show_bug.cgi?id=3D213068 http://bugs.kde.org/show_bug.cgi?id=3D287847 Diffs ----- kdeui/itemviews/kcategorizedview.cpp 46a1cde = kutils/kpluginselector.cpp ca0691d = Diff: http://git.reviewboard.kde.org/r/103335/diff/diff Testing ------- Yes, resizing the "kcmshell4 kwincompositing", "all effects" KPluginSelecto= r with large scrollbar sizes (bespin/position indicator/32px; oxygen was of= ten sufficient with the default size) after commit e91e5fed6b1aad365e12e919= f430c3e8147552d3 (see https://git.reviewboard.kde.org/r/103165/ ) was a rel= iable way to trigger the issue for me. It also showed that resize/updateGeometries occured in pairs (ie 4calls for= ming a block), what's never happened again with the patch. Thanks, Thomas L=C3=BCbking --===============8643111842323680846== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable
This is an automatically generated e-mail. To reply, visit: http://git.revie= wboard.kde.org/r/103335/

Review request for kdelibs, Rafael Fern=C3=A1ndez L=C3=B3pez and Jaime= Torres Amate.
By Thomas L=C3=BCbking.

Descripti= on

Also see https://git.reviewboard.kde.org/r/103313/


QListView::updateGeometries() has it's own opinion on whether the scrol=
lbars should be visible (valid range) or not
and triggers a (sometimes additionally timered) resize through ::layoutChil=
dren()
http://qt.gitorious.org/qt/qt/blobs/4.7/src/gui/itemviews/qlistview.cpp#lin=
e1499
(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 t=
he scrollbar visibility, effectively blocking the UI
So we prevent QListView from having an own opinion on the scrollbar visibil=
ity by
fixing it before calling the baseclass QListView::updateGeometries() and re=
storing the policy afterwards

Testing <= /h1>
Yes, resizing the "kcmshell4 kwincompositing", &qu=
ot;all effects" KPluginSelector with large scrollbar sizes (bespin/pos=
ition indicator/32px; oxygen was often sufficient with the default size) af=
ter commit e91e5fed6b1aad365e12e919f430c3e8147552d3 (see https://git.review=
board.kde.org/r/103165/ ) was a reliable way to trigger the issue for me.
It also showed that resize/updateGeometries occured in pairs (ie 4calls for=
ming  a block), what's never happened again with the patch.
Bugs: 213068, = 287847

Diffs=

  • kdeui/itemviews/kcategorizedview.cpp (46a1= cde)
  • kutils/kpluginselector.cpp (ca0691d)

View Diff

--===============8643111842323680846==--