diff options
author | axis <qt-info@nokia.com> | 2009-09-29 10:53:32 (GMT) |
---|---|---|
committer | axis <qt-info@nokia.com> | 2009-09-30 13:27:14 (GMT) |
commit | a93d0d1f970689991dd113d696e922854ff9ec6a (patch) | |
tree | 7ca564e5e68ac52572ac3ec0bb7f6b1b27b95f12 /src/gui/kernel/qapplication_s60.cpp | |
parent | 75666d254304746ead69892e92fa4ab39d219df1 (diff) | |
download | Qt-a93d0d1f970689991dd113d696e922854ff9ec6a.zip Qt-a93d0d1f970689991dd113d696e922854ff9ec6a.tar.gz Qt-a93d0d1f970689991dd113d696e922854ff9ec6a.tar.bz2 |
Revert "Switched to asynchronous focus handling on Symbian."
This reverts commit b6377f43410b14125a66ffd02acde69cfb6e455e.
The asynchronous handling caused too many headaches with input
methods, which expect the focus status to be updated immediately.
This may break the test case that was originally fixed by this patch
(I cannot find out which one at the moment), but that will have to be
solved in a different way.
Conflicts:
src/corelib/kernel/qcoreevent.cpp
src/corelib/kernel/qcoreevent.h
src/gui/kernel/qwidget.cpp
src/gui/kernel/qwidget_p.h
src/gui/kernel/qwidget_s60.cpp
Diffstat (limited to 'src/gui/kernel/qapplication_s60.cpp')
-rw-r--r-- | src/gui/kernel/qapplication_s60.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index 0650f6c..498b1e7 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -845,8 +845,22 @@ void QSymbianControl::FocusChanged(TDrawNow /* aDrawNow */) || (qwidget->windowType() & Qt::Popup) == Qt::Popup) return; - QEvent *deferredFocusEvent = new QEvent(QEvent::SymbianDeferredFocusChanged); - QApplication::postEvent(qwidget, deferredFocusEvent); + if (IsFocused()) { + QApplication::setActiveWindow(qwidget); +#ifdef Q_WS_S60 + // If widget is fullscreen, hide status pane and button container + // otherwise show them. + CEikStatusPane* statusPane = S60->statusPane(); + CEikButtonGroupContainer* buttonGroup = S60->buttonGroupContainer(); + bool isFullscreen = qwidget->windowState() & Qt::WindowFullScreen; + if (statusPane && (statusPane->IsVisible() == isFullscreen)) + statusPane->MakeVisible(!isFullscreen); + if (buttonGroup && (buttonGroup->IsVisible() == isFullscreen)) + buttonGroup->MakeVisible(!isFullscreen); +#endif + } else { + QApplication::setActiveWindow(0); + } } void QSymbianControl::HandleResourceChange(int resourceType) |