From def5901955e8b4cfcb9e2cd83c7dcf9ed0508a0a Mon Sep 17 00:00:00 2001 From: Morten Sorvig Date: Wed, 22 Jun 2011 13:33:27 +0200 Subject: Reintroduce QWindow::SurfaceType On Cocoa it makes sense to distinguish between the two window types. Reviewed-by: Samuel --- src/gui/kernel/qwindow.cpp | 12 ++++++++++++ src/gui/kernel/qwindow.h | 5 +++++ src/gui/kernel/qwindow_p.h | 2 ++ src/opengl/qgl_qpa.cpp | 2 ++ 4 files changed, 21 insertions(+) (limited to 'src') diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index d060adf89e..7fa9316878 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -72,6 +72,18 @@ QWindow::~QWindow() destroy(); } +void QWindow::setSurfaceType(SurfaceType surfaceType) +{ + Q_D(QWindow); + d->surfaceType = surfaceType; +} + +QWindow::SurfaceType QWindow::surfaceType() const +{ + Q_D(const QWindow); + return d->surfaceType; +} + void QWindow::setVisible(bool visible) { Q_D(QWindow); diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h index 20b6074274..67330e5291 100644 --- a/src/gui/kernel/qwindow.h +++ b/src/gui/kernel/qwindow.h @@ -100,9 +100,14 @@ class Q_GUI_EXPORT QWindow : public QObject, public QSurface Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle) public: + enum SurfaceType { RasterSurface, OpenGLSurface }; + QWindow(QWindow *parent = 0); virtual ~QWindow(); + void setSurfaceType(SurfaceType surfaceType); + SurfaceType surfaceType() const; + void setVisible(bool visible); bool visible() const; diff --git a/src/gui/kernel/qwindow_p.h b/src/gui/kernel/qwindow_p.h index a8b118319d..cca20bc30a 100644 --- a/src/gui/kernel/qwindow_p.h +++ b/src/gui/kernel/qwindow_p.h @@ -59,6 +59,7 @@ class Q_GUI_EXPORT QWindowPrivate : public QObjectPrivate public: QWindowPrivate() : QObjectPrivate() + , surfaceType(QWindow::RasterSurface) , windowFlags(Qt::Window) , parentWindow(0) , platformWindow(0) @@ -75,6 +76,7 @@ public: { } + QWindow::SurfaceType surfaceType; Qt::WindowFlags windowFlags; QWindow *parentWindow; QPlatformWindow *platformWindow; diff --git a/src/opengl/qgl_qpa.cpp b/src/opengl/qgl_qpa.cpp index 661f120601..7a4fb2c1a7 100644 --- a/src/opengl/qgl_qpa.cpp +++ b/src/opengl/qgl_qpa.cpp @@ -143,6 +143,7 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) winFormat.setAlphaBufferSize(qMax(winFormat.alphaBufferSize(), 8)); if (!widget->windowHandle()->handle()) { + widget->windowHandle()->setSurfaceType(QWindow::OpenGLSurface); widget->windowHandle()->setFormat(winFormat); widget->winId();//make window } @@ -294,6 +295,7 @@ QGLTemporaryContext::QGLTemporaryContext(bool, QWidget *) d->oldContext = const_cast(QGLContext::currentContext()); d->window = new QWindow; + d->window->setSurfaceType(QWindow::OpenGLSurface); d->window->setGeometry(QRect(0, 0, 3, 3)); d->window->create(); -- cgit v1.2.3