summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2011-12-01 15:01:01 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2011-12-01 15:18:48 +0200
commit1affc6720a338f59b824af1825936335e7ce1602 (patch)
tree59047e95965db55fcbe15391a127f2cc36518662
parentd2a3b9ee8c9329cac96b5e509df0e6a69dbef91c (diff)
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
-rw-r--r--src/gui/kernel/qapplication_s60.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index ca9c3a372b..c94d66d866 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();