summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gui/kernel/qwidget_lite.cpp20
-rw-r--r--src/gui/painting/qwindowsurface.cpp6
-rw-r--r--src/gui/painting/qwindowsurface_p.h1
-rw-r--r--src/plugins/graphicssystems/testlite/qwindowsurface_testlite.cpp8
-rw-r--r--src/plugins/graphicssystems/testlite/qwindowsurface_testlite.h1
5 files changed, 30 insertions, 6 deletions
diff --git a/src/gui/kernel/qwidget_lite.cpp b/src/gui/kernel/qwidget_lite.cpp
index d5e4ac2..cbda042 100644
--- a/src/gui/kernel/qwidget_lite.cpp
+++ b/src/gui/kernel/qwidget_lite.cpp
@@ -58,15 +58,23 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool /*destro
Q_UNUSED(initializeWindow);
// XXX
-
Qt::WindowFlags flags = data.window_flags;
-#if 1
+ if (!(flags & Qt::Window) || q->windowType() == Qt::Desktop)
+ return; // we only care about real toplevels
+
QWindowSurface *surface = q->windowSurface();
- if (surface && (flags & Qt::Window))
- data.window_flags = surface->setWindowFlags(data.window_flags);
-#endif
-// qDebug() << "create_sys" << q;
+
+ if (!surface)
+ surface = createDefaultWindowSurface();
+
+ Q_ASSERT(surface);
+
+ data.window_flags = surface->setWindowFlags(data.window_flags);
+
+ setWinId(surface->winId());
+
+ qDebug() << "create_sys" << q << q->internalWinId();
}
void QWidget::destroy(bool destroyWindow, bool destroySubWindows)
diff --git a/src/gui/painting/qwindowsurface.cpp b/src/gui/painting/qwindowsurface.cpp
index 8add040..1b0a2ef 100644
--- a/src/gui/painting/qwindowsurface.cpp
+++ b/src/gui/painting/qwindowsurface.cpp
@@ -378,6 +378,12 @@ void QWindowSurface::setVisible(bool visible)
Q_UNUSED(visible);
}
+
+WId QWindowSurface::winId() const
+{
+ return WId(0);
+}
+
#endif
QT_END_NAMESPACE
diff --git a/src/gui/painting/qwindowsurface_p.h b/src/gui/painting/qwindowsurface_p.h
index a84c461..88cc8ba 100644
--- a/src/gui/painting/qwindowsurface_p.h
+++ b/src/gui/painting/qwindowsurface_p.h
@@ -93,6 +93,7 @@ public:
virtual void setVisible(bool visible);
virtual Qt::WindowFlags setWindowFlags(Qt::WindowFlags type);
virtual Qt::WindowFlags windowFlags() const;
+ virtual WId winId() const;
#endif
bool hasStaticContentsSupport() const;
diff --git a/src/plugins/graphicssystems/testlite/qwindowsurface_testlite.cpp b/src/plugins/graphicssystems/testlite/qwindowsurface_testlite.cpp
index e0b9b9f..b14efb8 100644
--- a/src/plugins/graphicssystems/testlite/qwindowsurface_testlite.cpp
+++ b/src/plugins/graphicssystems/testlite/qwindowsurface_testlite.cpp
@@ -568,4 +568,12 @@ void QTestLiteWindowSurface::setVisible(bool visible)
}
+WId QTestLiteWindowSurface::winId() const
+{
+ if (xw)
+ return (WId) xw->window;
+ else
+ return WId(0);
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/graphicssystems/testlite/qwindowsurface_testlite.h b/src/plugins/graphicssystems/testlite/qwindowsurface_testlite.h
index af57c0b..59db81f 100644
--- a/src/plugins/graphicssystems/testlite/qwindowsurface_testlite.h
+++ b/src/plugins/graphicssystems/testlite/qwindowsurface_testlite.h
@@ -78,6 +78,7 @@ public:
Qt::WindowFlags setWindowFlags(Qt::WindowFlags type);
Qt::WindowFlags windowFlags() const;
void setVisible(bool visible);
+ WId winId() const;
private:
QTestLiteGraphicsSystem *mGraphicsSystem;