homescreenapp/hsdomainmodel/src/hspage.cpp
changeset 85 35368b604b28
parent 77 4b195f3bea29
child 92 6727c5d0afc7
--- a/homescreenapp/hsdomainmodel/src/hspage.cpp	Wed Aug 18 09:40:07 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hspage.cpp	Thu Sep 02 20:17:27 2010 +0300
@@ -15,6 +15,8 @@
 *
 */
 
+#include <QHash>
+
 #include <HbInstance>
 
 #include "hsdomainmodeldatastructures.h"
@@ -498,6 +500,8 @@
 {
     int z = 0;
 
+    QHash<int, qreal> widgetZValues;
+
     if (!mWidgets.isEmpty()) {
         QMultiMap<qreal, HsWidgetHost *> map;
         foreach (HsWidgetHost *widget, mWidgets) {
@@ -513,17 +517,22 @@
         }
 
         foreach (HsWidgetHost *widget, sortedWidgets) {
+            widgetZValues.insert(widget->databaseId(), z);
             widget->visual()->setZValue(z++);
-            widget->savePresentation();
         }
     }
 
     if (!mNewWidgets.isEmpty()) {
         foreach (HsWidgetHost *widget, mNewWidgets) {
+            widgetZValues.insert(widget->databaseId(), z);
             widget->visual()->setZValue(z++);
-            widget->savePresentation();
         }
     }
+
+    if (!widgetZValues.isEmpty()) {
+        HsDatabase::instance()->updateWidgetZValues(
+            widgetZValues, HsGui::instance()->orientation());
+    }
 }
 /*!
     Return this page's index.
@@ -559,6 +568,7 @@
     widget->visual()->disconnect(this);
     widget->disconnect(this);
 }
+
 /*!
     Disconnect and remove widget
 */
@@ -577,12 +587,11 @@
         if (visual->scene()) {
             visual->scene()->removeItem(visual);
         }
+        disconnectWidget(widget);
+        widget->remove();
     }
-    
+}
 
-    disconnectWidget(widget);
-    widget->remove();
-}
 /*!
     Remove widget if it faulted
 */