diff options
author | Pekka Vuorela <pekka.ta.vuorela@nokia.com> | 2012-03-01 16:54:50 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-22 16:13:21 +0100 |
commit | 7e90df7bf5aafd09ea5ed8bcc370db6a8912d173 (patch) | |
tree | af527348997c94a4b7362e99a0a4aecfaf144489 /src/gui | |
parent | 045c79f5ed6960109f9ebf76775fa1289c5080b0 (diff) |
FocusAboutToChange event to be send before focus changes
Focus change happen as: FocusAboutToChange event -> focus change
-> FocusOut event -> FocusIn event.
Input method need to have focus when calling commit(). Notification
on focus about to be lost allows QWindow implementations to commit in
time.
Also changes QWidget documentation to match code reality.
Change-Id: I17a8a374a33dd700909f79e370b42348869261a6
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 5611296385..e12183869a 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -1155,14 +1155,21 @@ void QGuiApplicationPrivate::processLeaveEvent(QWindowSystemInterfacePrivate::Le void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent *e) { QWindow *previous = QGuiApplicationPrivate::focus_window; - QGuiApplicationPrivate::focus_window = e->activated.data(); + QWindow *newFocus = e->activated.data(); - if (previous == QGuiApplicationPrivate::focus_window) + if (previous == newFocus) return; QObject *previousFocusObject = previous ? previous->focusObject() : 0; if (previous) { + QFocusEvent focusAboutToChange(QEvent::FocusAboutToChange); + QCoreApplication::sendSpontaneousEvent(previous, &focusAboutToChange); + } + + QGuiApplicationPrivate::focus_window = newFocus; + + if (previous) { QFocusEvent focusOut(QEvent::FocusOut); QCoreApplication::sendSpontaneousEvent(previous, &focusOut); QObject::disconnect(previous, SIGNAL(focusObjectChanged(QObject*)), |