summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qguiapplication.cpp
diff options
context:
space:
mode:
authorSamuel Rødal <samuel.rodal@nokia.com>2011-09-29 18:02:54 +0200
committerQt by Nokia <qt-info@nokia.com>2011-10-05 12:49:29 +0200
commit11070a090a9cc77d02315a3cb39eaf628bd9bfe7 (patch)
treef9ea6781a9694e991136ffb78fb1f1382cbe2c92 /src/gui/kernel/qguiapplication.cpp
parent253497b7446c7d723aa3bdd7152e25d6852f2604 (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.cpp22
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);
}