--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp Mon Sep 20 10:19:07 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp Mon Sep 27 11:52:00 2010 +0300
@@ -124,6 +124,8 @@
mContinuousFeedback(0),
mTrashBinFeedbackAlreadyPlayed(false),
mDeltaX(0),
+ mWidgetX(0),
+ mWidgetY(0),
mSceneMenu(0)
#ifdef Q_OS_SYMBIAN
,mSettingsMgr(0)
@@ -261,8 +263,7 @@
this, SIGNAL(event_waitInput()), state_waitInput);
state_moveWidgetMoving->addTransition(
this, SIGNAL(event_MoveWidgetDelete()), state_moveWidgetDelete);
- state_moveWidgetDelete->addTransition(
- this, SIGNAL(event_waitInput()), state_waitInput);
+ state_moveWidgetDelete->addTransition(state_waitInput);
state_moveScene->addTransition(
this, SIGNAL(event_waitInput()), state_waitInput);
@@ -606,7 +607,13 @@
HbPanGesture *gesture = qobject_cast<HbPanGesture *>(
event->gesture(Qt::PanGesture));
- mDeltaX = gesture->sceneOffset().x();
+ qreal temp = gesture->sceneOffset().x();
+ // for small movement take into consideration also previous delta to remove "shaking" effect
+ if (abs(mDeltaX - temp) < 10) {
+ mDeltaX = 0.9 * temp + 0.1 * mDeltaX;
+ } else {
+ mDeltaX = temp;
+ }
HsScene *scene = HsScene::instance();
int bounceEffect = HSCONFIGURATION_GET(bounceEffect);
@@ -673,9 +680,18 @@
qreal widgetX = qBound(lowerBoundX, widgetRect.x(), upperBoundX);
qreal widgetY = qBound(lowerBoundY, widgetRect.y(), upperBoundY);
+ // for small movement take into consideration also previous value to remove "shaking" effect
+ if ((abs(mWidgetX - widgetX) < 10) && (abs(mWidgetY - widgetY) < 10)) {
+ mWidgetX = 0.9 * widgetX + 0.1 * mWidgetX;
+ mWidgetY = 0.9 * widgetY + 0.1 * mWidgetY;
+ } else {
+ mWidgetX = widgetX;
+ mWidgetY = widgetY;
+ }
+
// If using ItemClipsChildrenToShape-flag in widgethost then
// setPos does not update position here, however setGeometry does it, QT bug?
- widget->visual()->setGeometry(widgetX, widgetY, widgetRect.width(), widgetRect.height());
+ widget->visual()->setGeometry(mWidgetX, mWidgetY, widgetRect.width(), widgetRect.height());
if (HSCONFIGURATION_GET(isSnapEnabled)) {
mSnapResult = HsWidgetPositioningOnWidgetMove::instance()->run(widget->visual()->sceneBoundingRect());
@@ -1110,7 +1126,6 @@
widget->remove();
scene->setActiveWidget(0);
}
- emit event_waitInput();
}
/*!