diff -r 3916af29624a -r 7dd137878ff8 homescreenapp/hsdomainmodel/src/hspage.cpp --- a/homescreenapp/hsdomainmodel/src/hspage.cpp Fri Aug 13 14:38:12 2010 +0300 +++ b/homescreenapp/hsdomainmodel/src/hspage.cpp Wed Aug 18 10:33:57 2010 +0300 @@ -15,6 +15,8 @@ * */ +#include + #include #include "hsdomainmodeldatastructures.h" @@ -498,6 +500,8 @@ { int z = 0; + QHash widgetZValues; + if (!mWidgets.isEmpty()) { QMultiMap 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 */