From af4e5576f4dcca16a3ca32bc13a948893a865f19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Fri, 20 May 2011 13:45:36 +0200 Subject: Added QGuiApplication::activeWindow(). --- src/gui/kernel/qguiapplication.cpp | 10 ++++++++-- src/gui/kernel/qguiapplication.h | 2 ++ src/gui/kernel/qguiapplication_p.h | 1 + src/gui/kernel/qwindow.cpp | 3 +++ 4 files changed, 14 insertions(+), 2 deletions(-) (limited to 'src/gui/kernel') diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 86fb7f5e1d..5bc6d1b2e0 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -108,6 +108,7 @@ QClipboard *QGuiApplicationPrivate::qt_clipboard = 0; #endif QWindowList QGuiApplicationPrivate::window_list; +QWindow *QGuiApplicationPrivate::active_window = 0; Q_GLOBAL_STATIC(QMutex, applicationFontMutex) QFont *QGuiApplicationPrivate::app_font = 0; @@ -172,6 +173,11 @@ QGuiApplicationPrivate::QGuiApplicationPrivate(int &argc, char **argv, int flags self = this; } +QWindow *QGuiApplication::activeWindow() +{ + return QGuiApplicationPrivate::active_window; +} + QWindowList QGuiApplication::topLevelWindows() { return QGuiApplicationPrivate::window_list; @@ -553,9 +559,9 @@ void QGuiApplicationPrivate::processLeaveEvent(QWindowSystemInterfacePrivate::Le QCoreApplication::sendSpontaneousEvent(e->leave.data(), &event); } -void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent *) +void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent *e) { -// QGuiApplication::setActiveWindow(e->activated.data()); + QGuiApplicationPrivate::active_window = e->activated.data(); } void QGuiApplicationPrivate::processGeometryChangeEvent(QWindowSystemInterfacePrivate::GeometryChangeEvent *e) diff --git a/src/gui/kernel/qguiapplication.h b/src/gui/kernel/qguiapplication.h index 1b2484519c..f12214dee1 100644 --- a/src/gui/kernel/qguiapplication.h +++ b/src/gui/kernel/qguiapplication.h @@ -81,6 +81,8 @@ public: static QWindowList topLevelWindows(); + static QWindow *activeWindow(); + #ifndef QT_NO_CURSOR static QCursor *overrideCursor(); static void setOverrideCursor(const QCursor &); diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h index dfe73a4c69..80aa5a525a 100644 --- a/src/gui/kernel/qguiapplication_p.h +++ b/src/gui/kernel/qguiapplication_p.h @@ -150,6 +150,7 @@ public: static QPalette *app_pal; static QWindowList window_list; + static QWindow *active_window; #ifndef QT_NO_CURSOR QList cursor_list; diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index 3ff7d6c998..fef579b6b0 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -62,6 +62,8 @@ QWindow::QWindow(QWindow *parent) QWindow::~QWindow() { + if (QGuiApplicationPrivate::active_window == this) + QGuiApplicationPrivate::active_window = 0; destroy(); } @@ -259,6 +261,7 @@ void QWindow::setOpacity(qreal level) void QWindow::requestActivateWindow() { Q_D(QWindow); + QGuiApplicationPrivate::active_window = this; if (d->platformWindow) { d->platformWindow->requestActivateWindow(); } -- cgit v1.2.3