diff options
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())); |