diff options
author | Samuel Rødal <samuel.rodal@nokia.com> | 2011-09-29 18:02:54 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-05 12:49:29 +0200 |
commit | 11070a090a9cc77d02315a3cb39eaf628bd9bfe7 (patch) | |
tree | f9ea6781a9694e991136ffb78fb1f1382cbe2c92 /src/gui/kernel/qguiapplication.cpp | |
parent | 253497b7446c7d723aa3bdd7152e25d6852f2604 (diff) |
Added QWindow::isActive() and focus in / out events.
Renamed QGuiApplication::activeWindow() to
QGuiApplication::focusWindow(), implemented QWindow::isActive() as a
style hint, and added focus in / out events.
Change-Id: I71866e76c5a817def3e17bcc20a4fc32081a0e7a
Reviewed-on: http://codereview.qt-project.org/5811
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Diffstat (limited to 'src/gui/kernel/qguiapplication.cpp')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index bfa60fa657..986fc5c11d 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -114,7 +114,7 @@ QClipboard *QGuiApplicationPrivate::qt_clipboard = 0; QList<QScreen *> QGuiApplicationPrivate::screen_list; QWindowList QGuiApplicationPrivate::window_list; -QWindow *QGuiApplicationPrivate::active_window = 0; +QWindow *QGuiApplicationPrivate::focus_window = 0; Q_GLOBAL_STATIC(QMutex, applicationFontMutex) QFont *QGuiApplicationPrivate::app_font = 0; @@ -181,9 +181,9 @@ QGuiApplicationPrivate::QGuiApplicationPrivate(int &argc, char **argv, int flags self = this; } -QWindow *QGuiApplication::activeWindow() +QWindow *QGuiApplication::focusWindow() { - return QGuiApplicationPrivate::active_window; + return QGuiApplicationPrivate::focus_window; } QWindowList QGuiApplication::topLevelWindows() @@ -678,8 +678,20 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate if (!e->activated) return; - QWindow *previous = QGuiApplicationPrivate::active_window; - QGuiApplicationPrivate::active_window = e->activated.data(); + QWindow *previous = QGuiApplicationPrivate::focus_window; + QGuiApplicationPrivate::focus_window = e->activated.data(); + + if (previous == QGuiApplicationPrivate::focus_window) + return; + + if (previous) { + QFocusEvent focusOut(QEvent::FocusOut); + QCoreApplication::sendSpontaneousEvent(previous, &focusOut); + } + + QFocusEvent focusIn(QEvent::FocusIn); + QCoreApplication::sendSpontaneousEvent(QGuiApplicationPrivate::focus_window, &focusIn); + if (self) self->notifyActiveWindowChange(previous); } |