homescreenapp/hsdomainmodel/src/hspagenewwidgetlayout.cpp
changeset 63 52b0f64eeb51
parent 62 341166945d65
child 69 87476091b3f5
--- a/homescreenapp/hsdomainmodel/src/hspagenewwidgetlayout.cpp	Fri Jun 25 19:19:22 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hspagenewwidgetlayout.cpp	Fri Jul 09 14:36:01 2010 +0300
@@ -20,6 +20,7 @@
 #include "hsdomainmodeldatastructures.h"
 #include "hspagenewwidgetlayout.h"
 #include "hsscene.h"
+#include "hspage.h"
 #include "hsdatabase.h"
 #include "hswidgethost.h"
 #include "hswallpaper.h"
@@ -113,13 +114,10 @@
        -> set widget center point to this touch point
     */
     if (mTouchPoint != QPointF() && mNewWidgets.count() == 1) {
-        QRectF pageRect = HsScene::mainWindow()->layoutRect();
-        qreal widgetX = qBound(qreal(0), mTouchPoint.x() - rects.at(0).width() / 2, pageRect.width() - rects.at(0).width());
-        qreal widgetY = qBound(qreal(64), mTouchPoint.y() - rects.at(0).height() / 2, pageRect.height() - rects.at(0).height());
-        mNewWidgets.at(0)->setGeometry(widgetX,
-                                       widgetY,
-                                       rects.at(0).width(), 
-                                       rects.at(0).height());
+        QRectF widgetRect = rects.at(0);
+        widgetRect.moveCenter(mTouchPoint);
+        widgetRect.moveTopLeft(HsScene::instance()->activePage()->adjustedWidgetPosition(widgetRect));
+        mNewWidgets.at(0)->setGeometry(widgetRect);
         /* we have to save widget presentation data here after drawing
            to get correct position for later use
         */
@@ -129,8 +127,7 @@
     else {
         HsWidgetPositioningOnWidgetAdd *algorithm =
             HsWidgetPositioningOnWidgetAdd::instance();
-        QRectF pageRect = HsScene::mainWindow()->layoutRect();
-        pageRect.adjust( (qreal)0,(qreal)64,(qreal)0,(qreal)0);
+        QRectF pageRect = HsScene::instance()->activePage()->contentGeometry();
         QList<QRectF> calculatedRects =
             algorithm->convert(pageRect, rects, QPointF());