diff options
author | axis <qt-info@nokia.com> | 2009-08-21 13:51:34 (GMT) |
---|---|---|
committer | axis <qt-info@nokia.com> | 2009-08-21 13:51:34 (GMT) |
commit | f51a3bf2ed75b68e6746f9154f3e44e48723a7fc (patch) | |
tree | 6105a10f236a9478404d2a48d7c68fc3fc4da592 /src/gui/kernel/qwidget_p.h | |
parent | afd7cfce7333635edc8d3637f81cc9c3023ee874 (diff) | |
parent | 4cc604be3fe96169c1dfdc05ff1b1a37e150e265 (diff) | |
download | Qt-f51a3bf2ed75b68e6746f9154f3e44e48723a7fc.zip Qt-f51a3bf2ed75b68e6746f9154f3e44e48723a7fc.tar.gz Qt-f51a3bf2ed75b68e6746f9154f3e44e48723a7fc.tar.bz2 |
Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt into master-s60
Conflicts:
src/gui/graphicsview/qgraphicsitem.cpp
src/gui/kernel/qwidget.cpp
src/gui/kernel/qwidget_p.h
Diffstat (limited to 'src/gui/kernel/qwidget_p.h')
-rw-r--r-- | src/gui/kernel/qwidget_p.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h index 8e58498..ed0abce 100644 --- a/src/gui/kernel/qwidget_p.h +++ b/src/gui/kernel/qwidget_p.h @@ -62,6 +62,7 @@ #include "QtGui/qsizepolicy.h" #include "QtGui/qstyle.h" #include "QtGui/qapplication.h" +#include <private/qgraphicseffect_p.h> #ifdef Q_WS_WIN #include "QtCore/qt_windows.h" @@ -460,6 +461,13 @@ public: return extra ? extra->nativeChildrenForced : false; } + inline QRect effectiveRectFor(const QRect &rect) const + { + if (graphicsEffect && graphicsEffect->isEnabled()) + return graphicsEffect->boundingRectFor(rect).toAlignedRect(); + return rect; + } + QSize adjustedSize() const; inline void handleSoftwareInputPanel(Qt::MouseButton button, bool clickCausedFocus) @@ -504,6 +512,7 @@ public: QWidgetItemV2 *widgetItem; QPaintEngine *extraPaintEngine; mutable const QMetaObject *polished; + QGraphicsEffect *graphicsEffect; // All widgets are added into the allWidgets set. Once // they receive a window id they are also added to the mapper. // This should just ensure that all widgets are deleted by QApplication @@ -681,6 +690,57 @@ public: }; +struct QWidgetPaintContext +{ + inline QWidgetPaintContext(QPaintDevice *d, const QRegion &r, const QPoint &o, int f, + QPainter *p, QWidgetBackingStore *b) + : pdev(d), rgn(r), offset(o), flags(f), sharedPainter(p), backingStore(b), painter(0) {} + + QPaintDevice *pdev; + QRegion rgn; + QPoint offset; + int flags; + QPainter *sharedPainter; + QWidgetBackingStore *backingStore; + QPainter *painter; +}; + +class QWidgetEffectSourcePrivate : public QGraphicsEffectSourcePrivate +{ +public: + QWidgetEffectSourcePrivate(QWidget *widget) + : QGraphicsEffectSourcePrivate(), m_widget(widget), context(0) + {} + + inline void detach() + { m_widget->setGraphicsEffect(0); } + + inline const QGraphicsItem *graphicsItem() const + { return 0; } + + inline const QWidget *widget() const + { return m_widget; } + + inline void update() + { m_widget->update(); } + + inline bool isPixmap() const + { return false; } + + inline const QStyleOption *styleOption() const + { return 0; } + + inline QRect deviceRect() const + { return m_widget->window()->rect(); } + + QRectF boundingRect(Qt::CoordinateSystem system) const; + void draw(QPainter *p); + QPixmap pixmap(Qt::CoordinateSystem system, QPoint *offset) const; + + QWidget *m_widget; + QWidgetPaintContext *context; +}; + inline QWExtra *QWidgetPrivate::extraData() const { return extra; |