src/gui/graphicsview/qgraphicswidget.cpp
changeset 30 5dc02b23752f
parent 25 e24348a560a6
child 37 758a864f9613
--- a/src/gui/graphicsview/qgraphicswidget.cpp	Wed Jun 23 19:07:03 2010 +0300
+++ b/src/gui/graphicsview/qgraphicswidget.cpp	Tue Jul 06 15:10:48 2010 +0300
@@ -324,6 +324,12 @@
 */
 
 /*!
+  \fn QGraphicsWidget::geometryChanged()
+
+  This signal gets emitted whenever the geometry is changed in setGeometry().
+*/
+
+/*!
     \property QGraphicsWidget::geometry
     \brief the geometry of the widget
 
@@ -384,13 +390,17 @@
     }
     QSizeF oldSize = size();
     QGraphicsLayoutItem::setGeometry(newGeom);
-
+    emit geometryChanged();
     // Send resize event
     bool resized = newGeom.size() != oldSize;
     if (resized) {
         QGraphicsSceneResizeEvent re;
         re.setOldSize(oldSize);
         re.setNewSize(newGeom.size());
+        if (oldSize.width() != newGeom.size().width())
+            emit widthChanged();
+        if (oldSize.height() != newGeom.size().height())
+            emit heightChanged();
         QApplication::sendEvent(this, &re);
     }
 }
@@ -737,6 +747,17 @@
 }
 
 /*!
+    \property QGraphicsWidget::layout
+    \brief The layout of the widget
+*/
+
+/*!
+    \fn void QGraphicsWidget::layoutChanged()
+    This signal gets emitted whenever the layout of the item changes
+    \internal
+*/
+
+/*!
     Returns this widget's layout, or 0 if no layout is currently managing this
     widget.
 
@@ -789,6 +810,7 @@
     l->setParentLayoutItem(this);
     l->d_func()->reparentChildItems(this);
     l->invalidate();
+    emit layoutChanged();
 }
 
 /*!
@@ -967,6 +989,36 @@
 }
 
 /*!
+    \property QGraphicsWidget::autoFillBackground
+    \brief whether the widget background is filled automatically
+    \since 4.7
+
+    If enabled, this property will cause Qt to fill the background of the
+    widget before invoking the paint() method. The color used is defined by the
+    QPalette::Window color role from the widget's \l{QPalette}{palette}.
+
+    In addition, Windows are always filled with QPalette::Window, unless the
+    WA_OpaquePaintEvent or WA_NoSystemBackground attributes are set.
+
+    By default, this property is false.
+
+    \sa Qt::WA_OpaquePaintEvent, Qt::WA_NoSystemBackground,
+*/
+bool QGraphicsWidget::autoFillBackground() const
+{
+    Q_D(const QGraphicsWidget);
+    return d->autoFillBackground;
+}
+void QGraphicsWidget::setAutoFillBackground(bool enabled)
+{
+    Q_D(QGraphicsWidget);
+    if (d->autoFillBackground != enabled) {
+        d->autoFillBackground = enabled;
+        update();
+    }
+}
+
+/*!
     If this widget is currently managed by a layout, this function notifies
     the layout that the widget's size hints have changed and the layout
     may need to resize and reposition the widget accordingly.
@@ -1047,9 +1099,6 @@
         d->setGeometryFromSetPos();
         break;
     case ItemParentChange: {
-        QGraphicsItem *parent = qVariantValue<QGraphicsItem *>(value);
-        d->fixFocusChainBeforeReparenting((parent && parent->isWidget()) ? static_cast<QGraphicsWidget *>(parent) : 0, scene());
-
         // Deliver ParentAboutToChange.
         QEvent event(QEvent::ParentAboutToChange);
         QApplication::sendEvent(this, &event);