summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@nokia.com>2010-04-08 07:58:08 (GMT)
committerJørgen Lind <jorgen.lind@nokia.com>2010-04-08 07:58:08 (GMT)
commitd6cf18d036df1ecead4c8471944880c7f9a414f6 (patch)
tree62bfa1bd88a5ad164abd611404c1e75aae1e2752 /src/gui
parentc13076a30e5ae3d0f6795261ad00ca1eb73ad0b9 (diff)
downloadQt-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.h3
-rw-r--r--src/gui/kernel/qplatformwindow_lite.cpp6
-rw-r--r--src/gui/kernel/qplatformwindow_lite.h12
-rw-r--r--src/gui/kernel/qwidget.cpp6
-rw-r--r--src/gui/kernel/qwidget_lite.cpp15
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()