diff -r 7dd137878ff8 -r e4f038c420f7 homescreenapp/hsdomainmodel/src/hspage.cpp --- a/homescreenapp/hsdomainmodel/src/hspage.cpp Wed Aug 18 10:33:57 2010 +0300 +++ b/homescreenapp/hsdomainmodel/src/hspage.cpp Mon Sep 13 13:03:23 2010 +0300 @@ -666,28 +666,31 @@ HsWidgetPresentationData presentation; presentation.orientation = orientation; + HsPageVisual *pageVisual = visual(); HsWidgetHostVisual *visual(0); #ifdef HSWIDGETORGANIZER_ALGORITHM QList newWidgets; #endif //HSWIDGETORGANIZER_ALGORITHM foreach (HsWidgetHost *widget, mWidgets) { visual = widget->visual(); - if (!widget->getPresentation(presentation)) { + if ( pageVisual->isAncestorOf(visual)) { + if (!widget->getPresentation(presentation)) { #ifndef HSWIDGETORGANIZER_ALGORITHM - QList geometries = converter->convert( - from, QList() << visual->geometry(), to); - visual->setGeometry(geometries.first()); - widget->savePresentation(); + QList geometries = converter->convert( + from, QList() << visual->geometry(), to); + visual->setGeometry(geometries.first()); + widget->savePresentation(); #else //HSWIDGETORGANIZER_ALGORITHM - newWidgets << widget; + newWidgets << widget; #endif //HSWIDGETORGANIZER_ALGORITHM - } else { - QRectF adjustWidgetPosition; - adjustWidgetPosition = visual->geometry(); - adjustWidgetPosition.moveTopLeft(presentation.pos()); - visual->setPos(adjustedWidgetPosition(adjustWidgetPosition)); - visual->setZValue(presentation.zValue); - widget->savePresentation(); //Needed to follow pageMargin dynamic change + } else { + QRectF adjustWidgetPosition; + adjustWidgetPosition = visual->geometry(); + adjustWidgetPosition.moveTopLeft(presentation.pos()); + visual->setPos(adjustedWidgetPosition(adjustWidgetPosition)); + visual->setZValue(presentation.zValue); + widget->savePresentation(); //Needed to follow pageMargin dynamic change + } } }