From 03dbba9a62ea6391639c54ccc89ea75d4a872597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lund=20Martsum?= Date: Fri, 16 Mar 2012 07:00:45 +0100 Subject: QLayoutItem - make controlTypes a virtual function. Just implementing the ### Qt5 suggestion about making controlTypes a virtual function. Change-Id: Ic1db47fe488f089de965438e456e9b48e0b96f32 Reviewed-by: Girish Ramakrishnan Reviewed-by: Lars Knoll --- src/widgets/kernel/qlayout.cpp | 13 +++++++++++++ src/widgets/kernel/qlayout.h | 1 + src/widgets/kernel/qlayoutitem.cpp | 16 +++++----------- src/widgets/kernel/qlayoutitem.h | 4 ++-- 4 files changed, 21 insertions(+), 13 deletions(-) (limited to 'src/widgets/kernel') diff --git a/src/widgets/kernel/qlayout.cpp b/src/widgets/kernel/qlayout.cpp index 541350c35c..8c4e988411 100644 --- a/src/widgets/kernel/qlayout.cpp +++ b/src/widgets/kernel/qlayout.cpp @@ -524,6 +524,19 @@ bool QLayout::isEmpty() const return true; } +/*! + \reimp +*/ +QSizePolicy::ControlTypes QLayout::controlTypes() const +{ + if (count() == 0) + return QSizePolicy::DefaultType; + QSizePolicy::ControlTypes types; + for (int i = count() - 1; i >= 0; --i) + types |= itemAt(i)->controlTypes(); + return types; +} + /*! \reimp */ diff --git a/src/widgets/kernel/qlayout.h b/src/widgets/kernel/qlayout.h index 5524443ab1..9a13922cb1 100644 --- a/src/widgets/kernel/qlayout.h +++ b/src/widgets/kernel/qlayout.h @@ -131,6 +131,7 @@ public: virtual int indexOf(QWidget *) const; virtual int count() const = 0; bool isEmpty() const; + QSizePolicy::ControlTypes controlTypes() const; int totalHeightForWidth(int w) const; QSize totalMinimumSize() const; diff --git a/src/widgets/kernel/qlayoutitem.cpp b/src/widgets/kernel/qlayoutitem.cpp index 814b807b82..8e08f5f39f 100644 --- a/src/widgets/kernel/qlayoutitem.cpp +++ b/src/widgets/kernel/qlayoutitem.cpp @@ -414,17 +414,6 @@ int QLayoutItem::heightForWidth(int /* w */) const */ QSizePolicy::ControlTypes QLayoutItem::controlTypes() const { - // ### Qt 5: This function should probably be virtual instead - if (const QWidget *widget = const_cast(this)->widget()) { - return widget->sizePolicy().controlType(); - } else if (const QLayout *layout = const_cast(this)->layout()) { - if (layout->count() == 0) - return QSizePolicy::DefaultType; - QSizePolicy::ControlTypes types; - for (int i = layout->count() - 1; i >= 0; --i) - types |= layout->itemAt(i)->controlTypes(); - return types; - } return QSizePolicy::DefaultType; } @@ -688,6 +677,11 @@ bool QWidgetItem::isEmpty() const return wid->isHidden() || wid->isWindow(); } +QSizePolicy::ControlTypes QWidgetItem::controlTypes() const +{ + return wid->sizePolicy().controlType(); +} + /*! \class QWidgetItemV2 \internal diff --git a/src/widgets/kernel/qlayoutitem.h b/src/widgets/kernel/qlayoutitem.h index 76aae6f794..dacbf1ea68 100644 --- a/src/widgets/kernel/qlayoutitem.h +++ b/src/widgets/kernel/qlayoutitem.h @@ -83,7 +83,7 @@ public: Qt::Alignment alignment() const { return align; } void setAlignment(Qt::Alignment a); - QSizePolicy::ControlTypes controlTypes() const; + virtual QSizePolicy::ControlTypes controlTypes() const; protected: Qt::Alignment align; @@ -135,7 +135,7 @@ public: bool hasHeightForWidth() const; int heightForWidth(int) const; - + QSizePolicy::ControlTypes controlTypes() const; protected: QWidget *wid; }; -- cgit v1.2.3