src/gui/kernel/qapplication_s60.cpp
branchRCL_3
changeset 14 c0432d11811c
parent 13 cc75c76972ee
child 17 4b6ee5efea19
--- a/src/gui/kernel/qapplication_s60.cpp	Wed Apr 21 12:15:23 2010 +0300
+++ b/src/gui/kernel/qapplication_s60.cpp	Wed Apr 21 20:15:53 2010 +0300
@@ -73,6 +73,7 @@
 # endif
 # include <private/qs60mainapplication_p.h>
 # include <centralrepository.h>
+# include "qs60mainappui.h"
 #endif
 
 #include "private/qstylesheetstyle_p.h"
@@ -372,8 +373,13 @@
 {
     if (S60->curWin == this)
         S60->curWin = 0;
-    if (!QApplicationPrivate::is_app_closing)
-        setFocusSafely(false);
+    if (!QApplicationPrivate::is_app_closing) {
+        QT_TRY {
+            setFocusSafely(false);
+        } QT_CATCH(const std::exception&) {
+            // ignore exceptions, nothing can be done
+        }
+    }
     S60->appUi()->RemoveFromStack(this);
     delete m_longTapDetector;
 }
@@ -534,6 +540,14 @@
     sendMouseEvent(receiver, type, globalPos, button, modifiers);
 }
 
+#ifdef Q_WS_S60
+void QSymbianControl::HandleStatusPaneSizeChange()
+{
+    QS60MainAppUi *s60AppUi = static_cast<QS60MainAppUi *>(S60->appUi());
+    s60AppUi->HandleStatusPaneSizeChange();
+}
+#endif
+
 void QSymbianControl::sendMouseEvent(
         QWidget *receiver,
         QEvent::Type type,
@@ -989,7 +1003,7 @@
         }
 #endif
     } else if (QApplication::activeWindow() == qwidget->window()) {
-        if (CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog()) {
+        if (CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog() || S60->menuBeingConstructed) {
             QWidget *fw = QApplication::focusWidget();
             if (fw) {
                 QFocusEvent event(QEvent::FocusOut, Qt::PopupFocusReason);
@@ -1239,6 +1253,7 @@
     }
 
     S60->avkonComponentsSupportTransparency = false;
+    S60->menuBeingConstructed = false;
 
 #ifdef Q_WS_S60
     TUid KCRUidAvkon = { 0x101F876E };