diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2011-12-01 13:01:01 (GMT) |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2011-12-01 13:18:48 (GMT) |
commit | 1affc6720a338f59b824af1825936335e7ce1602 (patch) | |
tree | 59047e95965db55fcbe15391a127f2cc36518662 /src/gui/kernel | |
parent | d2a3b9ee8c9329cac96b5e509df0e6a69dbef91c (diff) | |
download | Qt-1affc6720a338f59b824af1825936335e7ce1602.zip Qt-1affc6720a338f59b824af1825936335e7ce1602.tar.gz Qt-1affc6720a338f59b824af1825936335e7ce1602.tar.bz2 |
Symbian: Fix CBA display on application with multiple windows
If an application has more than one window and each window has widgets
that can receive focus, sometimes a situation happened when the last
focused window isn't actually the window that contains the current
focused widget, which led to displaying incorrect CBA. Changed
CBA displaying evaluation to be done whenever any control is focused
instead of just windows.
This can add a couple of extra S60->setRecursiveDecorationsVisibility()
calls to some applications, but since that is typically already called
multiple times anyway, it shouldn't be an issue.
Task-number: ou1cimx1#935663
Reviewed-by: Sami Merila
Diffstat (limited to 'src/gui/kernel')
-rw-r--r-- | src/gui/kernel/qapplication_s60.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index ca9c3a3..c94d66d 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -1548,6 +1548,7 @@ void QSymbianControl::FocusChanged(TDrawNow /* aDrawNow */) || (qwidget->windowType() & Qt::Popup) == Qt::Popup) return; + QWidget *parentWindow = qwidget->window(); if (IsFocused() && IsVisible()) { if (m_symbianPopupIsOpen) { QWidget *fw = QApplication::focusWidget(); @@ -1562,11 +1563,10 @@ void QSymbianControl::FocusChanged(TDrawNow /* aDrawNow */) qwidget->d_func()->setWindowIcon_sys(true); qwidget->d_func()->setWindowTitle_sys(qwidget->windowTitle()); #ifdef Q_WS_S60 - if (qwidget->isWindow()) - S60->setRecursiveDecorationsVisibility(qwidget, qwidget->windowState()); + if (parentWindow->isWindow()) + S60->setRecursiveDecorationsVisibility(parentWindow, parentWindow->windowState()); #endif } else { - QWidget *parentWindow = qwidget->window(); if (QApplication::activeWindow() == parentWindow && !hasFocusedAndVisibleChild(parentWindow)) { if (CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog() || S60->menuBeingConstructed) { QWidget *fw = QApplication::focusWidget(); |