summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/kernel/qapplication_s60.cpp5
-rw-r--r--src/gui/kernel/qt_s60_p.h2
-rw-r--r--src/gui/kernel/qwidget_s60.cpp9
3 files changed, 13 insertions, 3 deletions
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 7c5e790..e197dc5 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -1344,6 +1344,11 @@ void QSymbianControl::setFocusSafely(bool focus)
}
}
+bool QSymbianControl::isControlActive()
+{
+ return IsActivated() ? true : false;
+}
+
/*!
\typedef QApplication::QS60MainApplicationFactory
\since 4.6
diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h
index ad6a99a..eb1aa18 100644
--- a/src/gui/kernel/qt_s60_p.h
+++ b/src/gui/kernel/qt_s60_p.h
@@ -211,6 +211,8 @@ public:
void setFocusSafely(bool focus);
+ bool isControlActive();
+
#ifdef Q_WS_S60
void FadeBehindPopup(bool fade){ popupFader.FadeBehindPopup( this, this, fade); }
void HandleStatusPaneSizeChange();
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp
index 7494f92..fc13c93 100644
--- a/src/gui/kernel/qwidget_s60.cpp
+++ b/src/gui/kernel/qwidget_s60.cpp
@@ -366,7 +366,7 @@ void QWidgetPrivate::create_sys(WId window, bool /* initializeWindow */, bool de
// Symbian windows are always created in an inactive state
// We perform this assignment for the case where the window is being re-created
- // as aa result of a call to setParent_sys, on either this widget or one of its
+ // as a result of a call to setParent_sys, on either this widget or one of its
// ancestors.
extra->activated = 0;
@@ -410,7 +410,7 @@ void QWidgetPrivate::create_sys(WId window, bool /* initializeWindow */, bool de
// Symbian windows are always created in an inactive state
// We perform this assignment for the case where the window is being re-created
- // as aa result of a call to setParent_sys, on either this widget or one of its
+ // as a result of a call to setParent_sys, on either this widget or one of its
// ancestors.
extra->activated = 0;
@@ -954,7 +954,10 @@ void QWidgetPrivate::registerTouchWindow()
Q_Q(QWidget);
if (q->testAttribute(Qt::WA_WState_Created) && q->windowType() != Qt::Desktop) {
RWindow *rwindow = static_cast<RWindow *>(q->effectiveWinId()->DrawableWindow());
- rwindow->EnableAdvancedPointers();
+ QSymbianControl *window = static_cast<QSymbianControl *>(q->effectiveWinId());
+ //Enabling advanced pointer events for controls that already have active windows causes a panic.
+ if (!window->isControlActive())
+ rwindow->EnableAdvancedPointers();
}
#endif
}