summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel
diff options
context:
space:
mode:
authorSamuel Rødal <samuel.rodal@nokia.com>2011-05-20 13:45:36 +0200
committerSamuel Rødal <samuel.rodal@nokia.com>2011-05-20 13:45:55 +0200
commitaf4e5576f4dcca16a3ca32bc13a948893a865f19 (patch)
treea29c27b7820fb1054880500e50f4e7b3468e3ac3 /src/gui/kernel
parentd8d6bfb81e0c52d9b39c7b9f4c18f17ba95593f6 (diff)
Added QGuiApplication::activeWindow().
Diffstat (limited to 'src/gui/kernel')
-rw-r--r--src/gui/kernel/qguiapplication.cpp10
-rw-r--r--src/gui/kernel/qguiapplication.h2
-rw-r--r--src/gui/kernel/qguiapplication_p.h1
-rw-r--r--src/gui/kernel/qwindow.cpp3
4 files changed, 14 insertions, 2 deletions
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<QCursor> 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();
}