aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/controls/qquickcontrol.cpp184
-rw-r--r--src/controls/qquickcontrol_p.h30
-rw-r--r--src/controls/qquickcontrol_p_p.h14
-rw-r--r--src/imports/controls/BusyIndicator.qml5
-rw-r--r--src/imports/controls/Button.qml5
-rw-r--r--src/imports/controls/CheckBox.qml5
-rw-r--r--src/imports/controls/Frame.qml5
-rw-r--r--src/imports/controls/GroupBox.qml4
-rw-r--r--src/imports/controls/PageIndicator.qml5
-rw-r--r--src/imports/controls/ProgressBar.qml5
-rw-r--r--src/imports/controls/RadioButton.qml5
-rw-r--r--src/imports/controls/ScrollBar.qml5
-rw-r--r--src/imports/controls/ScrollIndicator.qml5
-rw-r--r--src/imports/controls/Slider.qml5
-rw-r--r--src/imports/controls/Switch.qml5
-rw-r--r--src/imports/controls/TabButton.qml5
-rw-r--r--src/imports/controls/TextField.qml5
-rw-r--r--src/imports/controls/ToggleButton.qml5
-rw-r--r--src/imports/controls/ToolButton.qml5
19 files changed, 185 insertions, 122 deletions
diff --git a/src/controls/qquickcontrol.cpp b/src/controls/qquickcontrol.cpp
index 0520e5d5..1d843597 100644
--- a/src/controls/qquickcontrol.cpp
+++ b/src/controls/qquickcontrol.cpp
@@ -53,8 +53,9 @@ QT_BEGIN_NAMESPACE
*/
QQuickControlPrivate::QQuickControlPrivate() :
- hasStyle(false), style(Q_NULLPTR), background(Q_NULLPTR),
- topPadding(0), leftPadding(0), rightPadding(0), bottomPadding(0)
+ hasStyle(false), hasTopPadding(false), hasLeftPadding(false), hasRightPadding(false), hasBottomPadding(false),
+ padding(0), topPadding(0), leftPadding(0), rightPadding(0), bottomPadding(0),
+ background(Q_NULLPTR), style(Q_NULLPTR)
{
}
@@ -64,6 +65,46 @@ void QQuickControlPrivate::mirrorChange()
q->mirrorChange();
}
+void QQuickControlPrivate::setTopPadding(qreal value, bool reset)
+{
+ Q_Q(QQuickControl);
+ qreal oldPadding = q->topPadding();
+ topPadding = value;
+ hasTopPadding = !reset;
+ if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding)))
+ emit q->topPaddingChanged();
+}
+
+void QQuickControlPrivate::setLeftPadding(qreal value, bool reset)
+{
+ Q_Q(QQuickControl);
+ qreal oldPadding = q->leftPadding();
+ leftPadding = value;
+ hasLeftPadding = !reset;
+ if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding)))
+ emit q->leftPaddingChanged();
+}
+
+void QQuickControlPrivate::setRightPadding(qreal value, bool reset)
+{
+ Q_Q(QQuickControl);
+ qreal oldPadding = q->rightPadding();
+ rightPadding = value;
+ hasRightPadding = !reset;
+ if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding)))
+ emit q->rightPaddingChanged();
+}
+
+void QQuickControlPrivate::setBottomPadding(qreal value, bool reset)
+{
+ Q_Q(QQuickControl);
+ qreal oldPadding = q->bottomPadding();
+ bottomPadding = value;
+ hasBottomPadding = !reset;
+ if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding)))
+ emit q->bottomPaddingChanged();
+}
+
void QQuickControlPrivate::resolveStyle(QQuickStyle *res)
{
Q_Q(QQuickControl);
@@ -85,6 +126,7 @@ QQuickControl::QQuickControl(QQuickControlPrivate &dd, QQuickItem *parent) :
}
/*!
+ \qmlproperty real QtQuickControls2::Control::padding
\qmlproperty real QtQuickControls2::Control::topPadding
\qmlproperty real QtQuickControls2::Control::leftPadding
\qmlproperty real QtQuickControls2::Control::rightPadding
@@ -92,63 +134,137 @@ QQuickControl::QQuickControl(QQuickControlPrivate &dd, QQuickItem *parent) :
These properties hold the padding.
*/
+qreal QQuickControl::padding() const
+{
+ Q_D(const QQuickControl);
+ return d->padding;
+}
+
+void QQuickControl::setPadding(qreal padding)
+{
+ Q_D(QQuickControl);
+ if (qFuzzyCompare(d->padding, padding))
+ return;
+ d->padding = padding;
+ emit paddingChanged();
+ if (!d->hasTopPadding)
+ emit topPaddingChanged();
+ if (!d->hasLeftPadding)
+ emit leftPaddingChanged();
+ if (!d->hasRightPadding)
+ emit rightPaddingChanged();
+ if (!d->hasBottomPadding)
+ emit bottomPaddingChanged();
+}
+
+void QQuickControl::resetPadding()
+{
+ setPadding(0);
+}
+
qreal QQuickControl::topPadding() const
{
Q_D(const QQuickControl);
- return d->topPadding;
+ if (d->hasTopPadding)
+ return d->topPadding;
+ return d->padding;
}
void QQuickControl::setTopPadding(qreal padding)
{
Q_D(QQuickControl);
- if (!qFuzzyCompare(d->topPadding, padding)) {
- d->topPadding = padding;
- emit topPaddingChanged();
- }
+ d->setTopPadding(padding);
+}
+
+void QQuickControl::resetTopPadding()
+{
+ Q_D(QQuickControl);
+ d->setTopPadding(0, true);
}
qreal QQuickControl::leftPadding() const
{
Q_D(const QQuickControl);
- return d->leftPadding;
+ if (d->hasLeftPadding)
+ return d->leftPadding;
+ return d->padding;
}
void QQuickControl::setLeftPadding(qreal padding)
{
Q_D(QQuickControl);
- if (!qFuzzyCompare(d->leftPadding, padding)) {
- d->leftPadding = padding;
- emit leftPaddingChanged();
- }
+ d->setLeftPadding(padding);
+}
+
+void QQuickControl::resetLeftPadding()
+{
+ Q_D(QQuickControl);
+ d->setLeftPadding(0, true);
}
qreal QQuickControl::rightPadding() const
{
Q_D(const QQuickControl);
- return d->rightPadding;
+ if (d->hasRightPadding)
+ return d->rightPadding;
+ return d->padding;
}
void QQuickControl::setRightPadding(qreal padding)
{
Q_D(QQuickControl);
- if (!qFuzzyCompare(d->rightPadding, padding)) {
- d->rightPadding = padding;
- emit rightPaddingChanged();
- }
+ d->setRightPadding(padding);
+}
+
+void QQuickControl::resetRightPadding()
+{
+ Q_D(QQuickControl);
+ d->setRightPadding(0, true);
}
qreal QQuickControl::bottomPadding() const
{
Q_D(const QQuickControl);
- return d->bottomPadding;
+ if (d->hasBottomPadding)
+ return d->bottomPadding;
+ return d->padding;
}
void QQuickControl::setBottomPadding(qreal padding)
{
Q_D(QQuickControl);
- if (!qFuzzyCompare(d->bottomPadding, padding)) {
- d->bottomPadding = padding;
- emit bottomPaddingChanged();
+ d->setBottomPadding(padding);
+}
+
+void QQuickControl::resetBottomPadding()
+{
+ Q_D(QQuickControl);
+ d->setBottomPadding(0, true);
+}
+
+/*!
+ \qmlproperty Item QtQuickControls2::Control::background
+
+ This property holds the background item.
+*/
+QQuickItem *QQuickControl::background() const
+{
+ Q_D(const QQuickControl);
+ return d->background;
+}
+
+void QQuickControl::setBackground(QQuickItem *background)
+{
+ Q_D(QQuickControl);
+ if (d->background != background) {
+ delete d->background;
+ d->background = background;
+ if (background) {
+ background->setParentItem(this);
+ if (qFuzzyIsNull(background->z()))
+ background->setZ(-1);
+ }
+ emit backgroundChanged();
}
}
@@ -191,32 +307,6 @@ void QQuickControl::resetStyle()
setStyle(Q_NULLPTR);
}
-/*!
- \qmlproperty Item QtQuickControls2::Control::background
-
- This property holds the background item.
-*/
-QQuickItem *QQuickControl::background() const
-{
- Q_D(const QQuickControl);
- return d->background;
-}
-
-void QQuickControl::setBackground(QQuickItem *background)
-{
- Q_D(QQuickControl);
- if (d->background != background) {
- delete d->background;
- d->background = background;
- if (background) {
- background->setParentItem(this);
- if (qFuzzyIsNull(background->z()))
- background->setZ(-1);
- }
- emit backgroundChanged();
- }
-}
-
bool QQuickControl::event(QEvent *event)
{
Q_D(QQuickControl);
diff --git a/src/controls/qquickcontrol_p.h b/src/controls/qquickcontrol_p.h
index 17f94d7d..3744700e 100644
--- a/src/controls/qquickcontrol_p.h
+++ b/src/controls/qquickcontrol_p.h
@@ -61,43 +61,53 @@ class Q_QUICKCONTROLS_EXPORT QQuickControl : public QQuickItem, public QQuickSty
{
Q_OBJECT
Q_INTERFACES(QQuickStylable)
- Q_PROPERTY(qreal topPadding READ topPadding WRITE setTopPadding NOTIFY topPaddingChanged FINAL)
- Q_PROPERTY(qreal leftPadding READ leftPadding WRITE setLeftPadding NOTIFY leftPaddingChanged FINAL)
- Q_PROPERTY(qreal rightPadding READ rightPadding WRITE setRightPadding NOTIFY rightPaddingChanged FINAL)
- Q_PROPERTY(qreal bottomPadding READ bottomPadding WRITE setBottomPadding NOTIFY bottomPaddingChanged FINAL)
- Q_PROPERTY(QQuickStyle *style READ style WRITE setStyle RESET resetStyle NOTIFY styleChanged FINAL)
+ Q_PROPERTY(qreal padding READ padding WRITE setPadding RESET resetPadding NOTIFY paddingChanged FINAL)
+ Q_PROPERTY(qreal topPadding READ topPadding WRITE setTopPadding RESET resetTopPadding NOTIFY topPaddingChanged FINAL)
+ Q_PROPERTY(qreal leftPadding READ leftPadding WRITE setLeftPadding RESET resetLeftPadding NOTIFY leftPaddingChanged FINAL)
+ Q_PROPERTY(qreal rightPadding READ rightPadding WRITE setRightPadding RESET resetRightPadding NOTIFY rightPaddingChanged FINAL)
+ Q_PROPERTY(qreal bottomPadding READ bottomPadding WRITE setBottomPadding RESET resetBottomPadding NOTIFY bottomPaddingChanged FINAL)
Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL)
+ Q_PROPERTY(QQuickStyle *style READ style WRITE setStyle RESET resetStyle NOTIFY styleChanged FINAL)
public:
explicit QQuickControl(QQuickItem *parent = Q_NULLPTR);
+ qreal padding() const;
+ void setPadding(qreal padding);
+ void resetPadding();
+
qreal topPadding() const;
void setTopPadding(qreal padding);
+ void resetTopPadding();
qreal leftPadding() const;
void setLeftPadding(qreal padding);
+ void resetLeftPadding();
qreal rightPadding() const;
void setRightPadding(qreal padding);
+ void resetRightPadding();
qreal bottomPadding() const;
void setBottomPadding(qreal padding);
+ void resetBottomPadding();
+
+ QQuickItem *background() const;
+ void setBackground(QQuickItem *background);
QQuickStyle *style() const Q_DECL_OVERRIDE;
void setStyle(QQuickStyle *style) Q_DECL_OVERRIDE;
bool hasStyle() const Q_DECL_OVERRIDE;
void resetStyle() Q_DECL_OVERRIDE;
- QQuickItem *background() const;
- void setBackground(QQuickItem *background);
-
Q_SIGNALS:
- void styleChanged();
- void backgroundChanged();
+ void paddingChanged();
void topPaddingChanged();
void leftPaddingChanged();
void rightPaddingChanged();
void bottomPaddingChanged();
+ void backgroundChanged();
+ void styleChanged();
protected:
QQuickControl(QQuickControlPrivate &dd, QQuickItem *parent);
diff --git a/src/controls/qquickcontrol_p_p.h b/src/controls/qquickcontrol_p_p.h
index cc593252..afd05385 100644
--- a/src/controls/qquickcontrol_p_p.h
+++ b/src/controls/qquickcontrol_p_p.h
@@ -62,15 +62,25 @@ public:
void mirrorChange() Q_DECL_OVERRIDE;
+ void setTopPadding(qreal value, bool reset = false);
+ void setLeftPadding(qreal value, bool reset = false);
+ void setRightPadding(qreal value, bool reset = false);
+ void setBottomPadding(qreal value, bool reset = false);
+
void resolveStyle(QQuickStyle *other = 0);
bool hasStyle;
- QQuickStyle *style;
- QQuickItem *background;
+ bool hasTopPadding;
+ bool hasLeftPadding;
+ bool hasRightPadding;
+ bool hasBottomPadding;
+ qreal padding;
qreal topPadding;
qreal leftPadding;
qreal rightPadding;
qreal bottomPadding;
+ QQuickItem *background;
+ QQuickStyle *style;
};
QT_END_NAMESPACE
diff --git a/src/imports/controls/BusyIndicator.qml b/src/imports/controls/BusyIndicator.qml
index f13b579f..690940b0 100644
--- a/src/imports/controls/BusyIndicator.qml
+++ b/src/imports/controls/BusyIndicator.qml
@@ -45,10 +45,7 @@ AbstractBusyIndicator {
Accessible.role: Accessible.Indicator
- topPadding: style.padding
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
+ padding: style.padding
indicator: Item {
id: delegate
diff --git a/src/imports/controls/Button.qml b/src/imports/controls/Button.qml
index f77e5685..b54856a9 100644
--- a/src/imports/controls/Button.qml
+++ b/src/imports/controls/Button.qml
@@ -49,10 +49,7 @@ AbstractButton {
Accessible.pressed: pressed
Accessible.role: Accessible.Button
- topPadding: style.padding
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
+ padding: style.padding
label: Text {
x: control.leftPadding
diff --git a/src/imports/controls/CheckBox.qml b/src/imports/controls/CheckBox.qml
index b100fcb5..559fda3b 100644
--- a/src/imports/controls/CheckBox.qml
+++ b/src/imports/controls/CheckBox.qml
@@ -53,10 +53,7 @@ AbstractCheckBox {
Accessible.pressed: pressed
Accessible.role: Accessible.CheckBox
- topPadding: style.padding
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
+ padding: style.padding
indicator: Rectangle {
readonly property bool mirror: control.effectiveLayoutDirection == Qt.RightToLeft
diff --git a/src/imports/controls/Frame.qml b/src/imports/controls/Frame.qml
index 766e5e30..bff6dd68 100644
--- a/src/imports/controls/Frame.qml
+++ b/src/imports/controls/Frame.qml
@@ -50,10 +50,7 @@ AbstractFrame {
contentWidth: content.children.length === 1 ? content.children[0].implicitWidth : 0
contentHeight: content.children.length === 1 ? content.children[0].implicitHeight : 0
- topPadding: style.padding
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
+ padding: style.padding
contentItem: Item {
id: content
diff --git a/src/imports/controls/GroupBox.qml b/src/imports/controls/GroupBox.qml
index 2e278e3a..f3f032a8 100644
--- a/src/imports/controls/GroupBox.qml
+++ b/src/imports/controls/GroupBox.qml
@@ -50,10 +50,8 @@ AbstractGroupBox {
contentWidth: content.children.length === 1 ? content.children[0].implicitWidth : 0
contentHeight: content.children.length === 1 ? content.children[0].implicitHeight : 0
+ padding: style.padding
topPadding: style.padding + (label && title ? label.implicitHeight + style.spacing : 0)
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
contentItem: Item {
id: content
diff --git a/src/imports/controls/PageIndicator.qml b/src/imports/controls/PageIndicator.qml
index 23a4a28d..28913866 100644
--- a/src/imports/controls/PageIndicator.qml
+++ b/src/imports/controls/PageIndicator.qml
@@ -61,10 +61,7 @@ AbstractPageIndicator {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- topPadding: style.padding
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
+ padding: style.padding
contentItem: Row {
id: row
diff --git a/src/imports/controls/ProgressBar.qml b/src/imports/controls/ProgressBar.qml
index bb3ac3a3..9e136fc2 100644
--- a/src/imports/controls/ProgressBar.qml
+++ b/src/imports/controls/ProgressBar.qml
@@ -47,10 +47,7 @@ AbstractProgressBar {
Accessible.role: Accessible.ProgressBar
- topPadding: style.padding
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
+ padding: style.padding
indicator: Item {
x: control.leftPadding
diff --git a/src/imports/controls/RadioButton.qml b/src/imports/controls/RadioButton.qml
index 82ecc10c..51fb0192 100644
--- a/src/imports/controls/RadioButton.qml
+++ b/src/imports/controls/RadioButton.qml
@@ -53,10 +53,7 @@ AbstractRadioButton {
Accessible.pressed: pressed
Accessible.role: Accessible.RadioButton
- topPadding: style.padding
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
+ padding: style.padding
indicator: Rectangle {
readonly property bool mirror: control.effectiveLayoutDirection == Qt.RightToLeft
diff --git a/src/imports/controls/ScrollBar.qml b/src/imports/controls/ScrollBar.qml
index e14b64ff..704ad503 100644
--- a/src/imports/controls/ScrollBar.qml
+++ b/src/imports/controls/ScrollBar.qml
@@ -48,10 +48,7 @@ AbstractScrollBar {
Accessible.pressed: pressed
Accessible.role: Accessible.ScrollBar
- topPadding: 2
- leftPadding: 2
- rightPadding: 2
- bottomPadding: 2
+ padding: 2
handle: Rectangle {
id: handle
diff --git a/src/imports/controls/ScrollIndicator.qml b/src/imports/controls/ScrollIndicator.qml
index 0b361e87..1fc1ddda 100644
--- a/src/imports/controls/ScrollIndicator.qml
+++ b/src/imports/controls/ScrollIndicator.qml
@@ -47,10 +47,7 @@ AbstractScrollIndicator {
Accessible.role: Accessible.Indicator
- topPadding: 2
- leftPadding: 2
- rightPadding: 2
- bottomPadding: 2
+ padding: 2
indicator: Rectangle {
id: indicator
diff --git a/src/imports/controls/Slider.qml b/src/imports/controls/Slider.qml
index 82eac87e..5af9ec59 100644
--- a/src/imports/controls/Slider.qml
+++ b/src/imports/controls/Slider.qml
@@ -50,10 +50,7 @@ AbstractSlider {
Accessible.pressed: pressed
Accessible.role: Accessible.Slider
- topPadding: style.padding
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
+ padding: style.padding
handle: Rectangle {
implicitWidth: 20
diff --git a/src/imports/controls/Switch.qml b/src/imports/controls/Switch.qml
index 4ce9801d..0b69000f 100644
--- a/src/imports/controls/Switch.qml
+++ b/src/imports/controls/Switch.qml
@@ -54,10 +54,7 @@ AbstractSwitch {
Accessible.pressed: pressed
Accessible.role: Accessible.Button // TODO: Switch?
- topPadding: style.padding
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
+ padding: style.padding
indicator: Rectangle {
readonly property bool mirror: control.effectiveLayoutDirection == Qt.RightToLeft
diff --git a/src/imports/controls/TabButton.qml b/src/imports/controls/TabButton.qml
index e1621c85..9a67b31e 100644
--- a/src/imports/controls/TabButton.qml
+++ b/src/imports/controls/TabButton.qml
@@ -50,10 +50,7 @@ AbstractTabButton {
Accessible.selected: checked
Accessible.role: Accessible.PageTab
- topPadding: style.padding
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
+ padding: style.padding
label: Text {
x: control.leftPadding
diff --git a/src/imports/controls/TextField.qml b/src/imports/controls/TextField.qml
index 12d5e404..cad8c329 100644
--- a/src/imports/controls/TextField.qml
+++ b/src/imports/controls/TextField.qml
@@ -54,10 +54,7 @@ AbstractTextField {
Accessible.passwordEdit: !!input && (input.echoMode == TextInput.Password ||
input.echoMode === TextInput.PasswordEchoOnEdit)
- topPadding: style.padding
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
+ padding: style.padding
input: TextInput {
x: control.leftPadding
diff --git a/src/imports/controls/ToggleButton.qml b/src/imports/controls/ToggleButton.qml
index a043f290..4f82d7fb 100644
--- a/src/imports/controls/ToggleButton.qml
+++ b/src/imports/controls/ToggleButton.qml
@@ -54,10 +54,7 @@ AbstractToggleButton {
Accessible.pressed: pressed
Accessible.role: Accessible.Button
- topPadding: style.padding
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
+ padding: style.padding
indicator: Rectangle {
readonly property bool mirror: control.effectiveLayoutDirection == Qt.RightToLeft
diff --git a/src/imports/controls/ToolButton.qml b/src/imports/controls/ToolButton.qml
index 9f838cb0..5e21374d 100644
--- a/src/imports/controls/ToolButton.qml
+++ b/src/imports/controls/ToolButton.qml
@@ -49,10 +49,7 @@ AbstractButton {
Accessible.pressed: pressed
Accessible.role: Accessible.Button
- topPadding: style.padding
- leftPadding: style.padding
- rightPadding: style.padding
- bottomPadding: style.padding
+ padding: style.padding
label: Text {
x: control.leftPadding