aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel d'Andrada <daniel.dandrada@nokia.com>2010-04-28 16:01:01 +0300
committerTomas Junnonen <tomas.junnonen@nokia.com>2010-04-29 13:02:21 +0300
commitad4b862e02b2ebcc1c75a16c12cfa78952ac544f (patch)
tree296d84bc9f9c337ad4dff2ae1121b4845742fc92
parentffe71c6b4d023af0381bfd49fa4539946e2e9f4f (diff)
Fixes: NB#165741, duicontrolpanel crashes sometimes after tapping connect in WLAN security key dialog
RevBy: Michael Hasselman Details: Use of single shot timers to trigger _q_inputPanelOpened() and _q_inputPanelClosed() is dangerous and not a good idea. This software input panel code in MSceneManager really needs refactoring. Also usage of nested main loops such as MDialog::exec() in general can bring some nasty scenarios.
-rw-r--r--src/corelib/scene/mscenemanager.cpp3
-rw-r--r--src/corelib/scene/mscenemanager_p.h4
2 files changed, 5 insertions, 2 deletions
diff --git a/src/corelib/scene/mscenemanager.cpp b/src/corelib/scene/mscenemanager.cpp
index a5215773..cc651bce 100644
--- a/src/corelib/scene/mscenemanager.cpp
+++ b/src/corelib/scene/mscenemanager.cpp
@@ -1199,6 +1199,9 @@ void MSceneManagerPrivate::_q_inputPanelOpened()
{
Q_Q(MSceneManager);
+ if (!focusedInputWidget)
+ return;
+
const bool widgetOnPage = onApplicationPage(focusedInputWidget);
if (navBar && widgetOnPage) {
navBarHidden = true;
diff --git a/src/corelib/scene/mscenemanager_p.h b/src/corelib/scene/mscenemanager_p.h
index 24aae9f1..5bcf122e 100644
--- a/src/corelib/scene/mscenemanager_p.h
+++ b/src/corelib/scene/mscenemanager_p.h
@@ -171,9 +171,9 @@ public:
bool navBarHidden;
bool escapeButtonHidden;
- QGraphicsItem *focusedInputWidget;
+ QPointer<QGraphicsWidget> focusedInputWidget;
- MSceneWindow *alteredSceneWindow;
+ QPointer<MSceneWindow> alteredSceneWindow;
QPoint sceneWindowTranslation;
bool pendingSIPClose;