diff options
author | Daniel d'Andrada <daniel.dandrada@nokia.com> | 2010-04-28 16:01:01 +0300 |
---|---|---|
committer | Tomas Junnonen <tomas.junnonen@nokia.com> | 2010-04-29 13:02:21 +0300 |
commit | ad4b862e02b2ebcc1c75a16c12cfa78952ac544f (patch) | |
tree | 296d84bc9f9c337ad4dff2ae1121b4845742fc92 | |
parent | ffe71c6b4d023af0381bfd49fa4539946e2e9f4f (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.cpp | 3 | ||||
-rw-r--r-- | src/corelib/scene/mscenemanager_p.h | 4 |
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; |