diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-02-12 13:28:57 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-02-12 13:28:57 (GMT) |
commit | f25119cb0406341e7cbb6ac679662f28fc7ab431 (patch) | |
tree | 62973ac6f52891343125bb35698f67cb68ebb2f8 /src | |
parent | ac0de5f1d783a32b4d3d40bf28daa1b252764483 (diff) | |
parent | 40bc32430551202ba519c4f0a95a341ea4547fb5 (diff) | |
download | Qt-f25119cb0406341e7cbb6ac679662f28fc7ab431.zip Qt-f25119cb0406341e7cbb6ac679662f28fc7ab431.tar.gz Qt-f25119cb0406341e7cbb6ac679662f28fc7ab431.tar.bz2 |
Merge branch '4.6' of scm.dev.nokia.troll.no:qt/qt-s60-public into 4.6-integration
* '4.6' of scm.dev.nokia.troll.no:qt/qt-s60-public:
Fix to S60 softkeys when no active Qt window or native widget is shown.
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/kernel/qsoftkeymanager_s60.cpp | 16 | ||||
-rw-r--r-- | src/gui/kernel/qsoftkeymanager_s60_p.h | 1 | ||||
-rw-r--r-- | src/gui/kernel/qwidget.cpp | 2 |
3 files changed, 8 insertions, 11 deletions
diff --git a/src/gui/kernel/qsoftkeymanager_s60.cpp b/src/gui/kernel/qsoftkeymanager_s60.cpp index af84a8f..8ac1e31 100644 --- a/src/gui/kernel/qsoftkeymanager_s60.cpp +++ b/src/gui/kernel/qsoftkeymanager_s60.cpp @@ -66,17 +66,18 @@ QSoftKeyManagerPrivateS60::QSoftKeyManagerPrivateS60() cachedCbaIconSize[1] = QSize(0,0); cachedCbaIconSize[2] = QSize(0,0); cachedCbaIconSize[3] = QSize(0,0); - skipNextUpdate = false; } bool QSoftKeyManagerPrivateS60::skipCbaUpdate() { - // lets not update softkeys if + // Lets not update softkeys if // 1. We don't have application panes, i.e. cba - // 2. S60 native dialog or menu is shown - if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes) || - CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog() || skipNextUpdate) { - skipNextUpdate = false; + // 2. Our CBA is not active, i.e. S60 native dialog or menu with custom CBA is shown + // Note: Cannot use IsDisplayingMenuOrDialog since CBA update can be triggered before + // menu/dialog CBA is actually displayed i.e. it is being costructed. + CEikButtonGroupContainer *appUiCba = S60->buttonGroupContainer(); + CEikButtonGroupContainer *currentCba = CEikButtonGroupContainer::Current(); + if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes) || appUiCba != currentCba) { return true; } return false; @@ -384,9 +385,6 @@ bool QSoftKeyManagerPrivateS60::handleCommand(int command) } qt_symbian_next_menu_from_action(actionContainer); QT_TRAP_THROWING(S60->menuBar()->TryDisplayMenuBarL()); - // TODO: hack remove, it can happen that IsDisplayingMenuOrDialog return false - // in updateSoftKeys_sys, and we will override menu CBA with our own - skipNextUpdate = true; } else { Q_ASSERT(action->softKeyRole() != QAction::NoSoftKey); QWidget *actionParent = action->parentWidget(); diff --git a/src/gui/kernel/qsoftkeymanager_s60_p.h b/src/gui/kernel/qsoftkeymanager_s60_p.h index f8bd6d9..823a2db 100644 --- a/src/gui/kernel/qsoftkeymanager_s60_p.h +++ b/src/gui/kernel/qsoftkeymanager_s60_p.h @@ -98,7 +98,6 @@ private: private: QHash<int, QAction*> realSoftKeyActions; QSize cachedCbaIconSize[4]; - bool skipNextUpdate; }; diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 2a19d23..850e961 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -8271,7 +8271,7 @@ bool QWidget::event(QEvent *event) } #ifdef QT_SOFTKEYS_ENABLED - if (isWindow() && isActiveWindow()) + if (isWindow()) QSoftKeyManager::updateSoftKeys(); #endif |