diff options
author | Jørgen Lind <jorgen.lind@nokia.com> | 2010-04-08 07:58:08 (GMT) |
---|---|---|
committer | Jørgen Lind <jorgen.lind@nokia.com> | 2010-04-08 07:58:08 (GMT) |
commit | d6cf18d036df1ecead4c8471944880c7f9a414f6 (patch) | |
tree | 62bfa1bd88a5ad164abd611404c1e75aae1e2752 /src/gui | |
parent | c13076a30e5ae3d0f6795261ad00ca1eb73ad0b9 (diff) | |
download | Qt-d6cf18d036df1ecead4c8471944880c7f9a414f6.zip Qt-d6cf18d036df1ecead4c8471944880c7f9a414f6.tar.gz Qt-d6cf18d036df1ecead4c8471944880c7f9a414f6.tar.bz2 |
QPlatformWindow refactoring
and ported the directfb plugin to use QPlatformWindow
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/kernel/qplatformintegration_lite.h | 3 | ||||
-rw-r--r-- | src/gui/kernel/qplatformwindow_lite.cpp | 6 | ||||
-rw-r--r-- | src/gui/kernel/qplatformwindow_lite.h | 12 | ||||
-rw-r--r-- | src/gui/kernel/qwidget.cpp | 6 | ||||
-rw-r--r-- | src/gui/kernel/qwidget_lite.cpp | 15 |
5 files changed, 33 insertions, 9 deletions
diff --git a/src/gui/kernel/qplatformintegration_lite.h b/src/gui/kernel/qplatformintegration_lite.h index 389dcfb..b13260e 100644 --- a/src/gui/kernel/qplatformintegration_lite.h +++ b/src/gui/kernel/qplatformintegration_lite.h @@ -62,7 +62,8 @@ public: // GraphicsSystem functions virtual QPixmapData *createPixmapData(QPixmapData::PixelType type) const = 0; - virtual void createWindowAndSurface(QPlatformWindow **window, QWindowSurface **surface, QWidget *widget, WId winId = 0) const = 0; + virtual QPlatformWindow *createPlatformWindow(QWidget *widget, WId winId = 0) const = 0; + virtual QWindowSurface *createWindowSurfaceForWindow(QWidget *widget, WId winId) const = 0; virtual QBlittable *createBlittable(const QSize &size) const; // Window System functions diff --git a/src/gui/kernel/qplatformwindow_lite.cpp b/src/gui/kernel/qplatformwindow_lite.cpp index ff1bf48..c8a3ed5 100644 --- a/src/gui/kernel/qplatformwindow_lite.cpp +++ b/src/gui/kernel/qplatformwindow_lite.cpp @@ -70,3 +70,9 @@ void QPlatformWindow::setWindowTitle(const QString &) {} void QPlatformWindow::raise() { qWarning("This plugin does not support raise()"); } void QPlatformWindow::lower() { qWarning("This plugin does not support lower()"); } + +void QPlatformWindow::setOpacity(qreal level) +{ + Q_UNUSED(level); + qWarning("This plugin does not support setting window opacity"); +} diff --git a/src/gui/kernel/qplatformwindow_lite.h b/src/gui/kernel/qplatformwindow_lite.h index 3fa97b5..8771cfe 100644 --- a/src/gui/kernel/qplatformwindow_lite.h +++ b/src/gui/kernel/qplatformwindow_lite.h @@ -41,13 +41,18 @@ #ifndef QPLATFORMWINDOW_H #define QPLATFORMWINDOW_H -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE #include <QtCore/qscopedpointer.h> +#include <QtCore/qrect.h> +#include <QtCore/qstring.h> +#include <QtGui/qwindowdefs.h> class QPlatformWindowPrivate; +class QWidget; + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE class Q_GUI_EXPORT QPlatformWindow { @@ -69,6 +74,7 @@ public: virtual void raise(); virtual void lower(); + virtual void setOpacity(qreal level); protected: QScopedPointer<QPlatformWindowPrivate> d_ptr; }; diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 4bcec93..7eaf03c 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -74,6 +74,9 @@ # include "qpaintengine.h" // for PorterDuff # include "private/qwindowsurface_qws_p.h" #endif +#if defined(Q_WS_LITE) +#include "qplatformwindow_lite.h" +#endif #include "qpainter.h" #include "qtooltip.h" #include "qwhatsthis.h" @@ -1574,6 +1577,9 @@ void QWidgetPrivate::createTLExtra() static int count = 0; qDebug() << "tlextra" << ++count; #endif +#if defined(Q_WS_LITE) + x->platformWindow = 0; +#endif } } diff --git a/src/gui/kernel/qwidget_lite.cpp b/src/gui/kernel/qwidget_lite.cpp index 7915d7f..cf93c5e 100644 --- a/src/gui/kernel/qwidget_lite.cpp +++ b/src/gui/kernel/qwidget_lite.cpp @@ -71,8 +71,13 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO QWindowSurface *surface = q->windowSurface(); QPlatformWindow *platformWindow = q->platformWindow(); + if (!platformWindow) { + platformWindow = QApplicationPrivate::platformIntegration()->createPlatformWindow(q); + } + Q_ASSERT(platformWindow); + if (!surface) { - QApplicationPrivate::platformIntegration()->createWindowAndSurface(&platformWindow,&surface,q); + surface = QApplicationPrivate::platformIntegration()->createWindowSurfaceForWindow(q,platformWindow->winId()); } Q_ASSERT(surface); @@ -102,8 +107,7 @@ void QWidgetPrivate::setParent_sys(QWidget *newparent, Qt::WindowFlags f) { Q_Q(QWidget); - - QWidget *oldParent = q->parentWidget(); +// QWidget *oldParent = q->parentWidget(); Qt::WindowFlags oldFlags = data.window_flags; if (parent != newparent) { QObjectPrivate::setParent_helper(newparent); //### why does this have to be done in the _sys function??? @@ -643,8 +647,8 @@ void QWidgetPrivate::updateFrameStrut() void QWidgetPrivate::setWindowOpacity_sys(qreal level) { - Q_UNUSED(level); - // XXX + Q_Q(QWidget); + q->platformWindow()->setOpacity(level); } void QWidgetPrivate::setWSGeometry(bool dontShow, const QRect &oldRect) @@ -663,6 +667,7 @@ QPaintEngine *QWidget::paintEngine() const QWindowSurface *QWidgetPrivate::createDefaultWindowSurface_sys() { qFatal("CreateDefaultWindowSurface_sys should not be used on lighthouse"); + return 0; } void QWidgetPrivate::setModal_sys() |