aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/controls/qquickcontrol.cpp6
-rw-r--r--src/controls/qquickprogressbar.cpp1
-rw-r--r--src/controls/qquickslider.cpp1
-rw-r--r--tests/auto/controls/data/tst_control.qml35
4 files changed, 40 insertions, 3 deletions
diff --git a/src/controls/qquickcontrol.cpp b/src/controls/qquickcontrol.cpp
index 44da18c6..26e68b9f 100644
--- a/src/controls/qquickcontrol.cpp
+++ b/src/controls/qquickcontrol.cpp
@@ -60,8 +60,6 @@ void QQuickControlPrivate::mirrorChange()
{
Q_Q(QQuickControl);
q->mirrorChange();
- emit q->effectiveLayoutDirectionChanged();
- emit q->mirroredChanged();
}
qreal QQuickControlPrivate::getContentWidth() const
@@ -316,7 +314,7 @@ void QQuickControl::setLayoutDirection(Qt::LayoutDirection direction)
if (d->layoutDirection != direction) {
d->layoutDirection = direction;
emit layoutDirectionChanged();
- emit effectiveLayoutDirectionChanged();
+ mirrorChange();
}
}
@@ -370,6 +368,8 @@ void QQuickControl::geometryChanged(const QRectF &newGeometry, const QRectF &old
void QQuickControl::mirrorChange()
{
+ emit effectiveLayoutDirectionChanged();
+ emit mirroredChanged();
}
void QQuickControl::paddingChange()
diff --git a/src/controls/qquickprogressbar.cpp b/src/controls/qquickprogressbar.cpp
index 41fe8920..b6df343e 100644
--- a/src/controls/qquickprogressbar.cpp
+++ b/src/controls/qquickprogressbar.cpp
@@ -145,6 +145,7 @@ void QQuickProgressBar::setIndicator(QQuickItem *indicator)
void QQuickProgressBar::mirrorChange()
{
+ QQuickControl::mirrorChange();
emit visualPositionChanged();
}
diff --git a/src/controls/qquickslider.cpp b/src/controls/qquickslider.cpp
index 1959140e..3f60fc95 100644
--- a/src/controls/qquickslider.cpp
+++ b/src/controls/qquickslider.cpp
@@ -412,6 +412,7 @@ void QQuickSlider::mouseUngrabEvent()
void QQuickSlider::mirrorChange()
{
+ QQuickControl::mirrorChange();
emit visualPositionChanged();
}
diff --git a/tests/auto/controls/data/tst_control.qml b/tests/auto/controls/data/tst_control.qml
index 9143c3f1..3d46ff16 100644
--- a/tests/auto/controls/data/tst_control.qml
+++ b/tests/auto/controls/data/tst_control.qml
@@ -55,6 +55,21 @@ TestCase {
Control { }
}
+ SignalSpy {
+ id: layoutDirectionSpy
+ signalName: "layoutDirectionChanged"
+ }
+
+ SignalSpy {
+ id: effectiveLayoutDirectionSpy
+ signalName: "effectiveLayoutDirectionChanged"
+ }
+
+ SignalSpy {
+ id: mirroredSpy
+ signalName: "mirroredChanged"
+ }
+
function test_defaults() {
var control = component.createObject(testCase)
verify(control)
@@ -67,6 +82,14 @@ TestCase {
function test_layoutDirection() {
var control = component.createObject(testCase)
+ layoutDirectionSpy.target = control
+ effectiveLayoutDirectionSpy.target = control
+ mirroredSpy.target = control
+
+ verify(layoutDirectionSpy.valid)
+ verify(effectiveLayoutDirectionSpy.valid)
+ verify(mirroredSpy.valid)
+
verify(!control.LayoutMirroring.enabled)
compare(control.layoutDirection, Qt.LeftToRight)
compare(control.effectiveLayoutDirection, Qt.LeftToRight)
@@ -76,21 +99,33 @@ TestCase {
compare(control.layoutDirection, Qt.RightToLeft)
compare(control.effectiveLayoutDirection, Qt.RightToLeft)
compare(control.mirrored, true)
+ compare(layoutDirectionSpy.count, 1)
+ compare(effectiveLayoutDirectionSpy.count, 1)
+ compare(mirroredSpy.count, 1)
control.LayoutMirroring.enabled = true
compare(control.layoutDirection, Qt.RightToLeft)
compare(control.effectiveLayoutDirection, Qt.LeftToRight)
compare(control.mirrored, false)
+ compare(layoutDirectionSpy.count, 1)
+ compare(effectiveLayoutDirectionSpy.count, 2)
+ compare(mirroredSpy.count, 2)
control.layoutDirection = Qt.LeftToRight
compare(control.layoutDirection, Qt.LeftToRight)
compare(control.effectiveLayoutDirection, Qt.RightToLeft)
compare(control.mirrored, true)
+ compare(layoutDirectionSpy.count, 2)
+ compare(effectiveLayoutDirectionSpy.count, 3)
+ compare(mirroredSpy.count, 3)
control.LayoutMirroring.enabled = false
compare(control.layoutDirection, Qt.LeftToRight)
compare(control.effectiveLayoutDirection, Qt.LeftToRight)
compare(control.mirrored, false)
+ compare(layoutDirectionSpy.count, 2)
+ compare(effectiveLayoutDirectionSpy.count, 4)
+ compare(mirroredSpy.count, 4)
control.destroy()
}