Review Request: Refactoring of extender drag & drop

Rob Scheepmaker r.scheepmaker at student.utwente.nl
Mon Feb 9 17:38:31 CET 2009


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

Review request for Plasma.


Summary
-------

This is a massive refactoring of how extenders handle drag & drop, plus some general restructuring, because that makes sense with the new way of doing things. Also notice a few of the layout workarounds are removed. Reason for this refactoring is that after hours of debugging, we concluded that the old way of doing things (view on an offscreen widget, which is nice because of the live updates, and because we can just paint on the canvas when we don't leave a view), is probably never going to work correctly. There was a bug (too lazy to look it up on bko now, and I don't got my mail readily available here), where quickly dragging extenderitems over other windows causes the item to no longer receive mouse events. Besides this patch being an elaborate fix for that bug, by now using QDrag and just setting a pixmap, it's actually faster too, the code is a bit shorter and it's more logically structured.


Diffs
-----

  /trunk/KDE/kdelibs/plasma/CMakeLists.txt 922573 
  /trunk/KDE/kdelibs/plasma/applet.h 922573 
  /trunk/KDE/kdelibs/plasma/containment.cpp 922573 
  /trunk/KDE/kdelibs/plasma/extender.h 922573 
  /trunk/KDE/kdelibs/plasma/extender.cpp 922575 
  /trunk/KDE/kdelibs/plasma/extenderitem.h 922762 
  /trunk/KDE/kdelibs/plasma/extenderitem.cpp 922762 
  /trunk/KDE/kdelibs/plasma/popupapplet.h 922573 
  /trunk/KDE/kdelibs/plasma/popupapplet.cpp 922573 
  /trunk/KDE/kdelibs/plasma/private/extenderapplet.cpp 922573 
  /trunk/KDE/kdelibs/plasma/private/extenderapplet_p.h 922573 
  /trunk/KDE/kdelibs/plasma/private/extenderitem_p.h 922762 
  /trunk/KDE/kdelibs/plasma/private/extenderitemmimedata.cpp PRE-CREATION 
  /trunk/KDE/kdelibs/plasma/private/extenderitemmimedata_p.h PRE-CREATION 

Diff: http://reviewboard.kde.org/r/49/diff


Testing
-------

I've done a bit of testing (on qt4.5 btw, backporting doesn't strike me as the best idea at the moment considering the insane size of this patch) with the calendar and systemtray. Basically, stuff seems to work, but there are a couple of regressions. Since it's trunk though, I still would like to get this in and continue working on improving it from there to avoid merge problems later, and to allow people to already test their applets with it and provide feedback. The regressions are:
* When dropping an item on te desktop, the mousepointer is used as the topleft position of the item, instead of the actual topleft position of the pixmap. I want to add the hotSpot position to the QMimeData to solve this.
* While it supports dropping items on popupApplets, you can't move the item to a desired position within the popup if that isn't the popup you started in, since the dragLeaveEvent of PopupApplet will hide the popup. I'll need to do some stuff with a timer to decide when it's 'safe' to hide the popup.
* Live updates of the pixmap while dragging would be nice and should be doable, but currently the pixmap is just static while dragging.
* When dropping on the desktop you can now actually resize the extenderapplet, which is nice, but the miminumSize isn't respected (maximumSize is), except on a fresh start of plasma, I'll be bugging Alexis about this, might be a Qt bug.

I experienced no crashes though, and items can be relocated, so I'd say it's good enough to go in and be improved from there.


Thanks,

Rob



More information about the Plasma-devel mailing list