aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/qquickflickable.cpp1
-rw-r--r--src/quick/items/qquickitem.cpp12
-rw-r--r--src/quick/items/qquickitem_p.h6
-rw-r--r--src/quick/items/qquickpathview.cpp1
-rw-r--r--src/quick/items/qquicktextedit.cpp1
-rw-r--r--src/quick/items/qquicktextinput.cpp1
-rw-r--r--src/quicktemplates/qquickabstractbutton.cpp49
-rw-r--r--src/quicktemplates/qquickabstractbutton_p_p.h1
-rw-r--r--src/quicktemplates/qquickcombobox.cpp1
-rw-r--r--src/quicktemplates/qquickcontainer.cpp1
-rw-r--r--src/quicktemplates/qquickdial.cpp2
-rw-r--r--src/quicktemplates/qquickdialogbuttonbox.cpp1
-rw-r--r--src/quicktemplates/qquickheaderview.cpp2
-rw-r--r--src/quicktemplates/qquickpane.cpp1
-rw-r--r--src/quicktemplates/qquickprogressbar.cpp2
-rw-r--r--src/quicktemplates/qquickrangeslider.cpp6
-rw-r--r--src/quicktemplates/qquickscrollbar.cpp6
-rw-r--r--src/quicktemplates/qquickscrollindicator.cpp7
-rw-r--r--src/quicktemplates/qquickslider.cpp7
-rw-r--r--src/quicktemplates/qquickspinbox.cpp1
-rw-r--r--src/quicktemplates/qquickstackview.cpp3
-rw-r--r--src/quicktemplates/qquicktumbler.cpp3
22 files changed, 89 insertions, 26 deletions
diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp
index 367734bfa7..3082f5d3f4 100644
--- a/src/quick/items/qquickflickable.cpp
+++ b/src/quick/items/qquickflickable.cpp
@@ -265,6 +265,7 @@ void QQuickFlickablePrivate::init()
q->setFlag(QQuickItem::ItemIsViewport);
QQuickItemPrivate *viewportPrivate = QQuickItemPrivate::get(contentItem);
viewportPrivate->addItemChangeListener(this, QQuickItemPrivate::Geometry);
+ setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Preferred);
}
/*!
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
index 7bfe3d1718..6a6a4ca4ad 100644
--- a/src/quick/items/qquickitem.cpp
+++ b/src/quick/items/qquickitem.cpp
@@ -3277,6 +3277,7 @@ QQuickItemPrivate::QQuickItemPrivate()
, baselineOffset(0)
, itemNodeInstance(nullptr)
, paintNode(nullptr)
+ , szPolicy(QLayoutPolicy::Fixed, QLayoutPolicy::Fixed)
{
}
@@ -3301,6 +3302,17 @@ void QQuickItemPrivate::init(QQuickItem *parent)
}
}
+QLayoutPolicy QQuickItemPrivate::sizePolicy() const
+{
+ return szPolicy;
+}
+
+void QQuickItemPrivate::setSizePolicy(const QLayoutPolicy::Policy& horizontalPolicy, const QLayoutPolicy::Policy& verticalPolicy)
+{
+ szPolicy.setHorizontalPolicy(horizontalPolicy);
+ szPolicy.setVerticalPolicy(verticalPolicy);
+}
+
void QQuickItemPrivate::data_append(QQmlListProperty<QObject> *prop, QObject *o)
{
if (!o)
diff --git a/src/quick/items/qquickitem_p.h b/src/quick/items/qquickitem_p.h
index 1771d18391..c774bc3b21 100644
--- a/src/quick/items/qquickitem_p.h
+++ b/src/quick/items/qquickitem_p.h
@@ -44,6 +44,8 @@
#include <QtCore/qelapsedtimer.h>
#include <QtCore/qpointer.h>
+#include <QtGui/private/qlayoutpolicy_p.h>
+
QT_BEGIN_NAMESPACE
class QNetworkReply;
@@ -708,6 +710,10 @@ public:
virtual void updatePolish() { }
virtual void dumpItemTree(int indent) const;
+
+ QLayoutPolicy sizePolicy() const;
+ void setSizePolicy(const QLayoutPolicy::Policy &horizontalPolicy, const QLayoutPolicy::Policy &verticalPolicy);
+ QLayoutPolicy szPolicy;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QQuickItemPrivate::ExtraDataTags)
diff --git a/src/quick/items/qquickpathview.cpp b/src/quick/items/qquickpathview.cpp
index 88e45d77b9..598e2b08cf 100644
--- a/src/quick/items/qquickpathview.cpp
+++ b/src/quick/items/qquickpathview.cpp
@@ -76,6 +76,7 @@ QQuickPathViewPrivate::QQuickPathViewPrivate()
, highlightRangeMode(QQuickPathView::StrictlyEnforceRange)
, highlightMoveDuration(300), modelCount(0), snapMode(QQuickPathView::NoSnap)
{
+ setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Preferred);
}
void QQuickPathViewPrivate::init()
diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp
index f5f85a771c..f4690c1f88 100644
--- a/src/quick/items/qquicktextedit.cpp
+++ b/src/quick/items/qquicktextedit.cpp
@@ -2704,6 +2704,7 @@ void QQuickTextEditPrivate::init()
#if QT_CONFIG(cursor)
updateMouseCursorShape();
#endif
+ setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Preferred);
}
void QQuickTextEditPrivate::resetInputMethod()
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp
index 363fa1cbd3..e48e529963 100644
--- a/src/quick/items/qquicktextinput.cpp
+++ b/src/quick/items/qquicktextinput.cpp
@@ -2867,6 +2867,7 @@ void QQuickTextInputPrivate::init()
}
m_inputControl = new QInputControl(QInputControl::LineEdit, q);
+ setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
}
void QQuickTextInputPrivate::cancelInput()
diff --git a/src/quicktemplates/qquickabstractbutton.cpp b/src/quicktemplates/qquickabstractbutton.cpp
index b173269268..0c1af73e55 100644
--- a/src/quicktemplates/qquickabstractbutton.cpp
+++ b/src/quicktemplates/qquickabstractbutton.cpp
@@ -87,6 +87,25 @@ QT_BEGIN_NAMESPACE
This signal is emitted when the button is interactively double clicked by the user via touch or mouse.
*/
+void QQuickAbstractButtonPrivate::init()
+{
+ Q_Q(QQuickAbstractButton);
+ q->setActiveFocusOnTab(true);
+#ifdef Q_OS_MACOS
+ q->setFocusPolicy(Qt::TabFocus);
+#else
+ q->setFocusPolicy(Qt::StrongFocus);
+#endif
+ q->setAcceptedMouseButtons(Qt::LeftButton);
+#if QT_CONFIG(quicktemplates2_multitouch)
+ q->setAcceptTouchEvents(true);
+#endif
+#if QT_CONFIG(cursor)
+ q->setCursor(Qt::ArrowCursor);
+#endif
+ setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
+}
+
QPointF QQuickAbstractButtonPrivate::centerPressPoint() const
{
return QPointF(qRound(width / 2), qRound(height / 2));
@@ -463,37 +482,15 @@ QList<QQuickAbstractButton *> QQuickAbstractButtonPrivate::findExclusiveButtons(
QQuickAbstractButton::QQuickAbstractButton(QQuickItem *parent)
: QQuickControl(*(new QQuickAbstractButtonPrivate), parent)
{
- setActiveFocusOnTab(true);
-#ifdef Q_OS_MACOS
- setFocusPolicy(Qt::TabFocus);
-#else
- setFocusPolicy(Qt::StrongFocus);
-#endif
- setAcceptedMouseButtons(Qt::LeftButton);
-#if QT_CONFIG(quicktemplates2_multitouch)
- setAcceptTouchEvents(true);
-#endif
-#if QT_CONFIG(cursor)
- setCursor(Qt::ArrowCursor);
-#endif
+ Q_D(QQuickAbstractButton);
+ d->init();
}
QQuickAbstractButton::QQuickAbstractButton(QQuickAbstractButtonPrivate &dd, QQuickItem *parent)
: QQuickControl(dd, parent)
{
- setActiveFocusOnTab(true);
-#ifdef Q_OS_MACOS
- setFocusPolicy(Qt::TabFocus);
-#else
- setFocusPolicy(Qt::StrongFocus);
-#endif
- setAcceptedMouseButtons(Qt::LeftButton);
-#if QT_CONFIG(quicktemplates2_multitouch)
- setAcceptTouchEvents(true);
-#endif
-#if QT_CONFIG(cursor)
- setCursor(Qt::ArrowCursor);
-#endif
+ Q_D(QQuickAbstractButton);
+ d->init();
}
QQuickAbstractButton::~QQuickAbstractButton()
diff --git a/src/quicktemplates/qquickabstractbutton_p_p.h b/src/quicktemplates/qquickabstractbutton_p_p.h
index e03b28fe82..52b42af67f 100644
--- a/src/quicktemplates/qquickabstractbutton_p_p.h
+++ b/src/quicktemplates/qquickabstractbutton_p_p.h
@@ -68,6 +68,7 @@ public:
void actionTextChange();
void setText(const QString &text, bool isExplicit);
+ void init();
void updateEffectiveIcon();
diff --git a/src/quicktemplates/qquickcombobox.cpp b/src/quicktemplates/qquickcombobox.cpp
index 6e08019000..c55e988b74 100644
--- a/src/quicktemplates/qquickcombobox.cpp
+++ b/src/quicktemplates/qquickcombobox.cpp
@@ -954,6 +954,7 @@ QQuickComboBox::QQuickComboBox(QQuickItem *parent)
#endif
Q_D(QQuickComboBox);
d->setInputMethodHints(Qt::ImhNoPredictiveText, true);
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
}
QQuickComboBox::~QQuickComboBox()
diff --git a/src/quicktemplates/qquickcontainer.cpp b/src/quicktemplates/qquickcontainer.cpp
index b696b1812c..115168083c 100644
--- a/src/quicktemplates/qquickcontainer.cpp
+++ b/src/quicktemplates/qquickcontainer.cpp
@@ -167,6 +167,7 @@ void QQuickContainerPrivate::init()
QObject::connect(contentModel, &QQmlObjectModel::childrenChanged, q, &QQuickContainer::contentChildrenChanged);
connect(q, &QQuickControl::implicitContentWidthChanged, this, &QQuickContainerPrivate::updateContentWidth);
connect(q, &QQuickControl::implicitContentHeightChanged, this, &QQuickContainerPrivate::updateContentHeight);
+ setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Preferred);
}
void QQuickContainerPrivate::cleanup()
diff --git a/src/quicktemplates/qquickdial.cpp b/src/quicktemplates/qquickdial.cpp
index feb17287e6..3f95bd901d 100644
--- a/src/quicktemplates/qquickdial.cpp
+++ b/src/quicktemplates/qquickdial.cpp
@@ -372,6 +372,8 @@ QQuickDial::QQuickDial(QQuickItem *parent)
#if QT_CONFIG(cursor)
setCursor(Qt::ArrowCursor);
#endif
+ Q_D(QQuickDial);
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Preferred);
}
/*!
diff --git a/src/quicktemplates/qquickdialogbuttonbox.cpp b/src/quicktemplates/qquickdialogbuttonbox.cpp
index 33c5d798fd..b7c486c472 100644
--- a/src/quicktemplates/qquickdialogbuttonbox.cpp
+++ b/src/quicktemplates/qquickdialogbuttonbox.cpp
@@ -455,6 +455,7 @@ QQuickDialogButtonBox::QQuickDialogButtonBox(QQuickItem *parent)
Q_D(QQuickDialogButtonBox);
d->changeTypes |= QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight;
d->buttonLayout = platformButtonLayout();
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
}
QQuickDialogButtonBox::~QQuickDialogButtonBox()
diff --git a/src/quicktemplates/qquickheaderview.cpp b/src/quicktemplates/qquickheaderview.cpp
index ef5607c67a..b8763e29a0 100644
--- a/src/quicktemplates/qquickheaderview.cpp
+++ b/src/quicktemplates/qquickheaderview.cpp
@@ -176,6 +176,8 @@ QAbstractItemModel *QQuickHeaderViewBasePrivate::selectionSourceModel()
QQuickHeaderViewBase::QQuickHeaderViewBase(Qt::Orientation orient, QQuickItem *parent)
: QQuickTableView(*(new QQuickHeaderViewBasePrivate), parent)
{
+ d_func()->setSizePolicy(orient == Qt::Horizontal ? QLayoutPolicy::Preferred : QLayoutPolicy::Fixed,
+ orient == Qt::Horizontal ? QLayoutPolicy::Fixed : QLayoutPolicy::Preferred);
d_func()->setOrientation(orient);
setSyncDirection(orient);
}
diff --git a/src/quicktemplates/qquickpane.cpp b/src/quicktemplates/qquickpane.cpp
index 968b633550..02f32e720e 100644
--- a/src/quicktemplates/qquickpane.cpp
+++ b/src/quicktemplates/qquickpane.cpp
@@ -108,6 +108,7 @@ void QQuickPanePrivate::init()
#endif
connect(q, &QQuickControl::implicitContentWidthChanged, this, &QQuickPanePrivate::updateContentWidth);
connect(q, &QQuickControl::implicitContentHeightChanged, this, &QQuickPanePrivate::updateContentHeight);
+ setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Preferred);
}
QList<QQuickItem *> QQuickPanePrivate::contentChildItems() const
diff --git a/src/quicktemplates/qquickprogressbar.cpp b/src/quicktemplates/qquickprogressbar.cpp
index c42a62b4fe..77be68873c 100644
--- a/src/quicktemplates/qquickprogressbar.cpp
+++ b/src/quicktemplates/qquickprogressbar.cpp
@@ -65,6 +65,8 @@ public:
QQuickProgressBar::QQuickProgressBar(QQuickItem *parent)
: QQuickControl(*(new QQuickProgressBarPrivate), parent)
{
+ Q_D(QQuickProgressBar);
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
}
/*!
diff --git a/src/quicktemplates/qquickrangeslider.cpp b/src/quicktemplates/qquickrangeslider.cpp
index 80618ff501..d97dfdff90 100644
--- a/src/quicktemplates/qquickrangeslider.cpp
+++ b/src/quicktemplates/qquickrangeslider.cpp
@@ -618,6 +618,7 @@ QQuickRangeSlider::QQuickRangeSlider(QQuickItem *parent)
Q_D(QQuickRangeSlider);
d->first = new QQuickRangeSliderNode(0.0, this);
d->second = new QQuickRangeSliderNode(1.0, this);
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
setFlag(QQuickItem::ItemIsFocusScope);
#ifdef Q_OS_MACOS
@@ -979,6 +980,11 @@ void QQuickRangeSlider::setOrientation(Qt::Orientation orientation)
if (d->orientation == orientation)
return;
+ if (orientation == Qt::Horizontal)
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
+ else
+ d->setSizePolicy(QLayoutPolicy::Fixed, QLayoutPolicy::Preferred);
+
d->orientation = orientation;
emit orientationChanged();
}
diff --git a/src/quicktemplates/qquickscrollbar.cpp b/src/quicktemplates/qquickscrollbar.cpp
index cec3df0b75..75de0363e9 100644
--- a/src/quicktemplates/qquickscrollbar.cpp
+++ b/src/quicktemplates/qquickscrollbar.cpp
@@ -368,6 +368,7 @@ QQuickScrollBar::QQuickScrollBar(QQuickItem *parent)
Q_D(QQuickScrollBar);
d->decreaseVisual = new QQuickIndicatorButton(this);
d->increaseVisual = new QQuickIndicatorButton(this);
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
setKeepMouseGrab(true);
setAcceptedMouseButtons(Qt::LeftButton);
#if QT_CONFIG(quicktemplates2_multitouch)
@@ -572,6 +573,11 @@ void QQuickScrollBar::setOrientation(Qt::Orientation orientation)
if (d->orientation == orientation)
return;
+ if (orientation == Qt::Horizontal)
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
+ else
+ d->setSizePolicy(QLayoutPolicy::Fixed, QLayoutPolicy::Preferred);
+
d->orientation = orientation;
if (isComponentComplete())
d->resizeContent();
diff --git a/src/quicktemplates/qquickscrollindicator.cpp b/src/quicktemplates/qquickscrollindicator.cpp
index 9cd4810ad1..9928503e86 100644
--- a/src/quicktemplates/qquickscrollindicator.cpp
+++ b/src/quicktemplates/qquickscrollindicator.cpp
@@ -168,6 +168,8 @@ void QQuickScrollIndicatorPrivate::resizeContent()
QQuickScrollIndicator::QQuickScrollIndicator(QQuickItem *parent)
: QQuickControl(*(new QQuickScrollIndicatorPrivate), parent)
{
+ Q_D(QQuickScrollIndicator);
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
}
QQuickScrollIndicatorAttached *QQuickScrollIndicator::qmlAttachedProperties(QObject *object)
@@ -295,6 +297,11 @@ void QQuickScrollIndicator::setOrientation(Qt::Orientation orientation)
if (d->orientation == orientation)
return;
+ if (orientation == Qt::Horizontal)
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
+ else
+ d->setSizePolicy(QLayoutPolicy::Fixed, QLayoutPolicy::Preferred);
+
d->orientation = orientation;
if (isComponentComplete())
d->resizeContent();
diff --git a/src/quicktemplates/qquickslider.cpp b/src/quicktemplates/qquickslider.cpp
index 2989735392..04b5589524 100644
--- a/src/quicktemplates/qquickslider.cpp
+++ b/src/quicktemplates/qquickslider.cpp
@@ -250,6 +250,8 @@ void QQuickSliderPrivate::itemDestroyed(QQuickItem *item)
QQuickSlider::QQuickSlider(QQuickItem *parent)
: QQuickControl(*(new QQuickSliderPrivate), parent)
{
+ Q_D(QQuickSlider);
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
setActiveFocusOnTab(true);
#ifdef Q_OS_MACOS
setFocusPolicy(Qt::TabFocus);
@@ -533,6 +535,11 @@ void QQuickSlider::setOrientation(Qt::Orientation orientation)
if (d->orientation == orientation)
return;
+ if (orientation == Qt::Horizontal)
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
+ else
+ d->setSizePolicy(QLayoutPolicy::Fixed, QLayoutPolicy::Preferred);
+
d->orientation = orientation;
emit orientationChanged();
}
diff --git a/src/quicktemplates/qquickspinbox.cpp b/src/quicktemplates/qquickspinbox.cpp
index 2f40bd1292..a76a06076c 100644
--- a/src/quicktemplates/qquickspinbox.cpp
+++ b/src/quicktemplates/qquickspinbox.cpp
@@ -470,6 +470,7 @@ QQuickSpinBox::QQuickSpinBox(QQuickItem *parent)
Q_D(QQuickSpinBox);
d->up = new QQuickIndicatorButton(this);
d->down = new QQuickIndicatorButton(this);
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Fixed);
setFlag(ItemIsFocusScope);
setFiltersChildMouseEvents(true);
diff --git a/src/quicktemplates/qquickstackview.cpp b/src/quicktemplates/qquickstackview.cpp
index f13dd20c24..457423104e 100644
--- a/src/quicktemplates/qquickstackview.cpp
+++ b/src/quicktemplates/qquickstackview.cpp
@@ -384,6 +384,9 @@ QQuickStackView::QQuickStackView(QQuickItem *parent)
: QQuickControl(*(new QQuickStackViewPrivate), parent)
{
setFlag(ItemIsFocusScope);
+
+ Q_D(QQuickStackView);
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Preferred);
}
QQuickStackView::~QQuickStackView()
diff --git a/src/quicktemplates/qquicktumbler.cpp b/src/quicktemplates/qquicktumbler.cpp
index e7f6606de3..71766cc698 100644
--- a/src/quicktemplates/qquicktumbler.cpp
+++ b/src/quicktemplates/qquicktumbler.cpp
@@ -259,6 +259,9 @@ QPalette QQuickTumblerPrivate::defaultPalette() const
QQuickTumbler::QQuickTumbler(QQuickItem *parent)
: QQuickControl(*(new QQuickTumblerPrivate), parent)
{
+ Q_D(QQuickTumbler);
+ d->setSizePolicy(QLayoutPolicy::Preferred, QLayoutPolicy::Preferred);
+
setActiveFocusOnTab(true);
connect(this, SIGNAL(leftPaddingChanged()), this, SLOT(_q_updateItemWidths()));