Review Request: Fix some issues with resizing panels

Anthony Bryant antjbryant at gmail.com
Sun Jun 27 13:52:59 CEST 2010


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.kde.org/r/4463/
-----------------------------------------------------------

Review request for Plasma.


Summary
-------

Resizing a horizontal panel's height or a vertical panel's width currently 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 controller 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 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 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 1143346 
  /trunk/KDE/kdebase/workspace/plasma/desktop/shell/panelcontroller.cpp 1143346 
  /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 panel, but they seem to have existed before this patch as well.


Thanks,

Anthony

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/plasma-devel/attachments/20100627/de1e280a/attachment.htm 


More information about the Plasma-devel mailing list