summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qwindow.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2011-05-21 21:31:46 +0200
committerLars Knoll <lars.knoll@nokia.com>2011-05-22 13:52:17 +0200
commitfd7bfc618430bbd5e9d4118d264179c22abf3f4a (patch)
treeb1afcabe36dffba2358eea8e17b189d6b771d743 /src/gui/kernel/qwindow.cpp
parent121cc4d955fe4aa3b0f9de0d61bf1ff9f6e944ab (diff)
Add QGuiApp::topLevelAt and fix visibility flag
Add and remove windows to the list of top level windows. Correctly set the visibility flag for windows and implement a QGuiApplication::topLevelAt() method that uses the QPlatformScreen.
Diffstat (limited to 'src/gui/kernel/qwindow.cpp')
-rw-r--r--src/gui/kernel/qwindow.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index fef579b6b0..5efd087b09 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -58,21 +58,27 @@ QWindow::QWindow(QWindow *parent)
{
Q_D(QWindow);
d->parentWindow = parent;
+ QGuiApplicationPrivate::window_list.prepend(this);
}
QWindow::~QWindow()
{
if (QGuiApplicationPrivate::active_window == this)
QGuiApplicationPrivate::active_window = 0;
+ QGuiApplicationPrivate::window_list.removeAll(this);
destroy();
}
void QWindow::setVisible(bool visible)
{
Q_D(QWindow);
- if (!d->platformWindow) {
+
+ if (d->visible == visible)
+ return;
+ d->visible = visible;
+
+ if (!d->platformWindow)
create();
- }
d->platformWindow->setVisible(visible);
}