SVN commit 927141 by mart: theory: the desktop breakage could happen because the panel overlaps the desktop for a while, making containment()->view() or corona::containmentfordesktop() fails, leaving the desktop view without a containment try to reposition the panel before a vertical movement, it should prevent the panel to go into the desktop for an instant CCBUG:176280 M +16 -10 containment.cpp --- trunk/KDE/kdelibs/plasma/containment.cpp #927140:927141 @@ -1177,20 +1177,26 @@ { //FIXME if the applet is moved to another containment we need to unfocus it + QVariant newValue = Applet::itemChange(change, value); + if (isContainment() && !ContainmentPrivate::s_positioning && - (change == QGraphicsItem::ItemSceneHasChanged || change == QGraphicsItem::ItemPositionHasChanged)) { - switch (d->type) { - case PanelContainment: - case CustomPanelContainment: - d->positionPanel(); - break; - default: - d->positionContainments(); - break; + (change == QGraphicsItem::ItemSceneChange || change == QGraphicsItem::ItemPositionChange)) { + + //if the position will be actually changed, reposition before the change + if (newValue == value) { + switch (d->type) { + case PanelContainment: + case CustomPanelContainment: + d->positionPanel(); + break; + default: + d->positionContainments(); + break; + } } } - return Applet::itemChange(change, value); + return newValue; } void Containment::enableAction(const QString &name, bool enable)