From kde-panel-devel Mon Jun 28 16:49:47 2010 From: "Aaron Seigo" Date: Mon, 28 Jun 2010 16:49:47 +0000 To: kde-panel-devel Subject: Re: Review Request: Fix some issues with resizing panels Message-Id: <20100628164947.17412.77775 () localhost> X-MARC-Message: https://marc.info/?l=kde-panel-devel&m=127774382321017 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--===============2134581873==" --===============2134581873== Content-Type: multipart/alternative; boundary="===============1555196517616743587==" --===============1555196517616743587== 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://reviewboard.kde.org/r/4463/#review6314 ----------------------------------------------------------- Ship it! looks good and the improvement is quite noticeable. great work. i'll commit= and backport to the 4.5 branch shortly. and yes, please consider getting a= n svn account: http://techbase.kde.org/Contribute/Get_a_SVN_Account :) - Aaron On 2010-06-27 11:52:59, Anthony Bryant wrote: > = > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > http://reviewboard.kde.org/r/4463/ > ----------------------------------------------------------- > = > (Updated 2010-06-27 11:52:59) > = > = > Review request for Plasma. > = > = > Summary > ------- > = > Resizing a horizontal panel's height or a vertical panel's width currentl= y has some problems, which make it look like the size is randomly adjusting= while you drag it. > The cause turns out to be a sequence of calls resulting in setContainment= () being called on every resize: > 1. Containment::resizeEvent() - from Qt > 2. ContainmentPrivate::positionPanel() > 3. Containment::setPos() - to Qt > 4. Containment::geometryChanged() signal - from Qt > 5. ViewPrivate::updateSceneRect() slot > 6. View::sceneRectAboutToChange() signal > 7. PanelView::pinchContainmentToCurrentScreen() slot > 8. PanelView::pinchContainment() > 9. PanelController::setContainment() > Whenever setContainment() is called, some of the tool buttons in the cont= roller are removed and re-added. Since this happens on every resize event, = resizing the panel is very slow and jerky, and if local coordinates from th= e mouse event are being compared it turns out in the wrong place. > = > To fix this, I have used global coordinates to find the new position of t= he controller, and removed the call to setContainment() from pinchContainme= nt() - it should only be called on initialization afaics. > = > Another issue this fixes is to always resize with something, even if the = mouse is out of the allowed range. In this case, it bounds the new size to = the allowed range, so that resizing past the limit works as expected. > = > = > Diffs > ----- > = > /trunk/KDE/kdebase/workspace/plasma/desktop/shell/panelcontroller.h 114= 3346 = > /trunk/KDE/kdebase/workspace/plasma/desktop/shell/panelcontroller.cpp 1= 143346 = > /trunk/KDE/kdebase/workspace/plasma/desktop/shell/panelview.cpp 1143346 = > = > Diff: http://reviewboard.kde.org/r/4463/diff > = > = > Testing > ------- > = > Tried moving and resizing both horizontal and vertical panels. I noticed = some visible relayouting of the controller and repainting issues in the pan= el, but they seem to have existed before this patch as well. > = > = > Thanks, > = > Anthony > = > --===============1555196517616743587== 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://reviewboard.kde= .org/r/4463/

Ship it!

looks good and the improvement is quite noticeable. great work. i'=
;ll commit and backport to the 4.5 branch shortly. and yes, please consider=
 getting an svn account: http://techbase.kde.org/Contribute/Get_a_SVN_Accou=
nt

:)

- Aaron


On June 27th, 2010, 11:52 a.m., Anthony Bryant wrote:

Review request for Plasma.
By Anthony Bryant.

Updated 2010-06-27 11:52:59

Descripti= on

Resizing a horizontal panel's =
height or a vertical panel's width currently has some problems, which m=
ake it look like the size is randomly adjusting while you drag it.
The cause turns out to be a sequence of calls resulting in setContainment()=
 being called on every resize:
1. Containment::resizeEvent() - from Qt
2. ContainmentPrivate::positionPanel()
3. Containment::setPos() - to Qt
4. Containment::geometryChanged() signal - from Qt
5. ViewPrivate::updateSceneRect() slot
6. View::sceneRectAboutToChange() signal
7. PanelView::pinchContainmentToCurrentScreen() slot
8. PanelView::pinchContainment()
9. PanelController::setContainment()
Whenever setContainment() is called, some of the tool buttons in the contro=
ller are removed and re-added. Since this happens on every resize event, re=
sizing the panel is very slow and jerky, and if local coordinates from the =
mouse event are being compared it turns out in the wrong place.

To fix this, I have used global coordinates to find the new position of the=
 controller, and removed the call to setContainment() from pinchContainment=
() - it should only be called on initialization afaics.

Another issue this fixes is to always resize with something, even if the mo=
use is out of the allowed range. In this case, it bounds the new size to th=
e allowed range, so that resizing past the limit works as expected.

Testing <= /h1>
Tried moving and resizing both hor=
izontal and vertical panels. I noticed some visible relayouting of the cont=
roller and repainting issues in the panel, but they seem to have existed be=
fore this patch as well.

Diffs=

  • /trunk/KDE/kdebase/workspace/plasma/desktop/shell/panelcontroller.h (1143346)
  • /trunk/KDE/kdebase/workspace/plasma/desktop/shell/panelcontroller.cpp = (1143346)
  • /trunk/KDE/kdebase/workspace/plasma/desktop/shell/panelview.cpp (1143346)

View Diff

--===============1555196517616743587==-- --===============2134581873== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel --===============2134581873==--