src/gui/graphicsview/qgraphicswidget_p.cpp
branchGCC_SURGE
changeset 31 5daf16870df6
parent 30 5dc02b23752f
child 33 3e2da88830cd
--- a/src/gui/graphicsview/qgraphicswidget_p.cpp	Mon Jun 21 22:38:13 2010 +0100
+++ b/src/gui/graphicsview/qgraphicswidget_p.cpp	Thu Jul 22 16:41:55 2010 +0100
@@ -44,6 +44,7 @@
 #ifndef QT_NO_GRAPHICSVIEW
 
 #include <QtCore/qdebug.h>
+#include <QtCore/qnumeric.h>
 #include "qgraphicswidget_p.h"
 #include "qgraphicslayout.h"
 #include "qgraphicsscene_p.h"
@@ -70,14 +71,18 @@
     adjustWindowFlags(&wFlags);
     windowFlags = wFlags;
 
-    q->setParentItem(parentItem);
+    if (parentItem)
+        setParentItemHelper(parentItem, 0, 0);
+
     q->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred, QSizePolicy::DefaultType));
     q->setGraphicsItem(q);
 
     resolveLayoutDirection();
     q->unsetWindowFrameMargins();
-    q->setFlag(QGraphicsItem::ItemUsesExtendedStyleOption);
-    q->setFlag(QGraphicsItem::ItemSendsGeometryChanges);
+    flags |= QGraphicsItem::ItemUsesExtendedStyleOption;
+    flags |= QGraphicsItem::ItemSendsGeometryChanges;
+    if (windowFlags & Qt::Window)
+        flags |= QGraphicsItem::ItemIsPanel;
 }
 
 qreal QGraphicsWidgetPrivate::titleBarHeight(const QStyleOptionTitleBar &options) const
@@ -825,6 +830,68 @@
     }
 }
 
+qreal QGraphicsWidgetPrivate::width() const
+{
+    Q_Q(const QGraphicsWidget);
+    return q->geometry().width();
+}
+
+void QGraphicsWidgetPrivate::setWidth(qreal w)
+{
+    if (qIsNaN(w))
+        return;
+    Q_Q(QGraphicsWidget);
+    if (q->geometry().width() == w)
+        return;
+
+    QRectF oldGeom = q->geometry();
+
+    q->setGeometry(QRectF(q->x(), q->y(), w, height()));
+}
+
+void QGraphicsWidgetPrivate::resetWidth()
+{
+    Q_Q(QGraphicsWidget);
+    q->setGeometry(QRectF(q->x(), q->y(), 0, height()));
+}
+
+qreal QGraphicsWidgetPrivate::height() const
+{
+    Q_Q(const QGraphicsWidget);
+    return q->geometry().height();
+}
+
+void QGraphicsWidgetPrivate::setHeight(qreal h)
+{
+    if (qIsNaN(h))
+        return;
+    Q_Q(QGraphicsWidget);
+    if (q->geometry().height() == h)
+        return;
+
+    QRectF oldGeom = q->geometry();
+
+    q->setGeometry(QRectF(q->x(), q->y(), width(), h));
+}
+
+void QGraphicsWidgetPrivate::resetHeight()
+{
+    Q_Q(QGraphicsWidget);
+    q->setGeometry(QRectF(q->x(), q->y(), width(), 0));
+}
+
+void QGraphicsWidgetPrivate::setGeometryFromSetPos()
+{
+    if (inSetGeometry)
+        return;
+    Q_Q(QGraphicsWidget);
+    inSetPos = 1;
+    // Ensure setGeometry is called (avoid recursion when setPos is
+    // called from within setGeometry).
+    q->setGeometry(QRectF(pos, q->size()));
+    inSetPos = 0 ;
+}
+
 QT_END_NAMESPACE
 
 #endif //QT_NO_GRAPHICSVIEW