--- a/src/hbwidgets/editors/hbselectioncontrol_p.cpp Thu Jul 15 14:03:49 2010 +0100
+++ b/src/hbwidgets/editors/hbselectioncontrol_p.cpp Thu Jul 22 16:36:53 2010 +0100
@@ -91,6 +91,7 @@
void panGestureFinished (HbPanGesture *gesture);
void show();
void _q_aboutToChangeView();
+ void detachEditor(bool updateAtthachedEditorState);
public:
@@ -126,8 +127,13 @@
createPrimitives();
q->setVisible(false);
- q->setFlag(QGraphicsItem::ItemIsFocusable,false);
- q->setFlag(QGraphicsItem::ItemIsPanel,true);
+ QGraphicsItem::GraphicsItemFlags itemFlags = q->flags();
+#if QT_VERSION >= 0x040600
+ itemFlags |= QGraphicsItem::ItemSendsGeometryChanges;
+#endif
+ itemFlags &= ~QGraphicsItem::ItemIsFocusable;
+ itemFlags |= QGraphicsItem::ItemIsPanel;
+ q->setFlags(itemFlags);
q->setFocusPolicy(Qt::NoFocus);
q->setActive(false);
@@ -466,6 +472,21 @@
}
}
+void HbSelectionControlPrivate::detachEditor(bool updateAtthachedEditorState)
+{
+ Q_Q(HbSelectionControl);
+ if (mEdit) {
+ q->hideHandles();
+ reparentHandles(q);
+ if (updateAtthachedEditorState) {
+ mEdit->disconnect(q);
+ mEdit->d_func()->selectionControl = 0;
+ mEdit->deselect();
+ }
+ mEdit = 0;
+ mTopLevelAncestor = 0;
+ }
+}
HbSelectionControl::HbSelectionControl() : HbWidget(*new HbSelectionControlPrivate(),0)
@@ -510,17 +531,14 @@
void HbSelectionControl::detachEditor()
{
Q_D(HbSelectionControl);
- if (d->mEdit) {
- hideHandles();
- d->reparentHandles(this);
- d->mEdit->disconnect(this);
- d->mEdit->d_func()->selectionControl = 0;
- d->mEdit->deselect();
- d->mEdit = 0;
- d->mTopLevelAncestor = 0;
- }
+ d->detachEditor(true);
}
+void HbSelectionControl::detachEditorFromDestructor()
+{
+ Q_D(HbSelectionControl);
+ d->detachEditor(false);
+}
void HbSelectionControl::hideHandles()
{
@@ -597,7 +615,7 @@
switch(tap->state()) {
case Qt::GestureStarted:
if (d->mEdit) {
- HbWidgetFeedback::triggered(d->mEdit, Hb::InstantPressed);
+ HbWidgetFeedback::triggered(this, Hb::InstantPressed);
}
break;
case Qt::GestureUpdated:
@@ -605,7 +623,7 @@
case Qt::GestureFinished:
if (d->mEdit) {
d->tapGestureFinished(pos);
- HbWidgetFeedback::triggered(d->mEdit, Hb::InstantReleased);
+ HbWidgetFeedback::triggered(this, Hb::InstantReleased);
}
break;
case Qt::GestureCanceled:
@@ -630,7 +648,7 @@
case Qt::GestureFinished:
if (d->mEdit) {
d->panGestureFinished(pan);
- HbWidgetFeedback::triggered(d->mEdit, Hb::InstantReleased);
+ HbWidgetFeedback::triggered(this, Hb::InstantReleased);
}
break;
case Qt::GestureCanceled: