aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-qt/qt5/qtquickcontrols2/0001-Revert-Get-the-scale-of-the-popup-item-when-setting-.patch
blob: 1692e2ded2c90c93b7782065682de192371d65d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
From 9fada65e1dd8958cbe4b8dc12c9e4814fcff5a6c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
Date: Fri, 16 Apr 2021 21:54:16 +0200
Subject: [PATCH] Revert "Get the scale of the popup item when setting the
 parent item"

Upgrade 5.14.2 (for us dunfell) -> 5.15.2 introduced a bug: Opening a menu
for the second+ time, menu moves right and down and parts land outside screen.
Reported but nobody cares. [1]

[1] https://bugreports.qt.io/browse/QTBUG-86973

Upstream-Status: Pending

This reverts commit 761dba8b23b7e558acc57b3e481648ce319a4397.
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 src/quicktemplates2/qquickpopuppositioner.cpp | 18 +++++++--------
 .../qquickpopuppositioner_p_p.h               |  1 -
 tests/auto/controls/data/tst_combobox.qml     | 22 -------------------
 tests/auto/controls/data/tst_popup.qml        |  3 ---
 4 files changed, 8 insertions(+), 36 deletions(-)

diff --git a/src/quicktemplates2/qquickpopuppositioner.cpp b/src/quicktemplates2/qquickpopuppositioner.cpp
index 1bfaafbe6..dbe8ac1d5 100644
--- a/src/quicktemplates2/qquickpopuppositioner.cpp
+++ b/src/quicktemplates2/qquickpopuppositioner.cpp
@@ -92,10 +92,7 @@ void QQuickPopupPositioner::setParentItem(QQuickItem *parent)
 
     QQuickItemPrivate::get(parent)->addItemChangeListener(this, ItemChangeTypes);
     addAncestorListeners(parent->parentItem());
-    // Store the scale property so the end result of any transition that could effect the scale
-    // does not influence the top left of the final popup, so it doesn't appear to flip from one
-    // position to another as a result
-    m_popupScale = m_popup->popupItem()->scale();
+
     if (m_popup->popupItem()->isVisible())
         QQuickPopupPrivate::get(m_popup)->reposition();
 }
@@ -111,10 +108,11 @@ void QQuickPopupPositioner::reposition()
         return;
     }
 
-    const qreal w = popupItem->width() * m_popupScale;
-    const qreal h = popupItem->height() * m_popupScale;
-    const qreal iw = popupItem->implicitWidth() * m_popupScale;
-    const qreal ih = popupItem->implicitHeight() * m_popupScale;
+    const qreal scale = popupItem->scale();
+    const qreal w = popupItem->width() * scale;
+    const qreal h = popupItem->height() * scale;
+    const qreal iw = popupItem->implicitWidth() * scale;
+    const qreal ih = popupItem->implicitHeight() * scale;
 
     bool widthAdjusted = false;
     bool heightAdjusted = false;
@@ -260,9 +258,9 @@ void QQuickPopupPositioner::reposition()
     }
 
     if (!p->hasWidth && widthAdjusted && rect.width() > 0)
-        popupItem->setWidth(rect.width() / m_popupScale);
+        popupItem->setWidth(rect.width() / scale);
     if (!p->hasHeight && heightAdjusted && rect.height() > 0)
-        popupItem->setHeight(rect.height() / m_popupScale);
+        popupItem->setHeight(rect.height() / scale);
     m_positioning = false;
 }
 
diff --git a/src/quicktemplates2/qquickpopuppositioner_p_p.h b/src/quicktemplates2/qquickpopuppositioner_p_p.h
index 03a2e2fed..64f57a3fa 100644
--- a/src/quicktemplates2/qquickpopuppositioner_p_p.h
+++ b/src/quicktemplates2/qquickpopuppositioner_p_p.h
@@ -79,7 +79,6 @@ protected:
     bool m_positioning = false;
     QQuickItem *m_parentItem = nullptr;
     QQuickPopup *m_popup = nullptr;
-    qreal m_popupScale = 1.0;
 };
 
 QT_END_NAMESPACE
diff --git a/tests/auto/controls/data/tst_combobox.qml b/tests/auto/controls/data/tst_combobox.qml
index 1c58372ff..e9156fee5 100644
--- a/tests/auto/controls/data/tst_combobox.qml
+++ b/tests/auto/controls/data/tst_combobox.qml
@@ -911,28 +911,6 @@ TestCase {
         compare(control.popup.visible, true)
         verify(control.popup.contentItem.y < control.y)
 
-
-        // Account for when a transition of a scale from 0.9-1.0 that it is placed above right away and not below
-        // first just because there is room at the 0.9 scale
-        if (control.popup.enter !== null) {
-            // hide
-            mouseClick(control)
-            compare(control.pressed, false)
-            tryCompare(control.popup, "visible", false)
-            control.y = control.Window.height - (control.popup.contentItem.height * 0.99)
-            var popupYSpy = createTemporaryObject(signalSpy, testCase, {target: control.popup, signalName: "yChanged"})
-            verify(popupYSpy.valid)
-            mousePress(control)
-            compare(control.pressed, true)
-            compare(control.popup.visible, false)
-            mouseRelease(control)
-            compare(control.pressed, false)
-            compare(control.popup.visible, true)
-            tryCompare(control.popup.enter, "running", false)
-            verify(control.popup.contentItem.y < control.y)
-            verify(popupYSpy.count === 1)
-        }
-
         // follow the control outside the horizontal window bounds
         control.x = -control.width / 2
         compare(control.x, -control.width / 2)
diff --git a/tests/auto/controls/data/tst_popup.qml b/tests/auto/controls/data/tst_popup.qml
index 57d5ccccf..71d6f2d76 100644
--- a/tests/auto/controls/data/tst_popup.qml
+++ b/tests/auto/controls/data/tst_popup.qml
@@ -1276,9 +1276,6 @@ TestCase {
             { visible: true, width: 100, height: 100 })
         verify(control)
         verify(control.visible)
-        // If there is a transition then make sure it is finished
-        if (control.enter !== null)
-            tryCompare(control.enter, "running", false)
         compare(control.parent, control.Overlay.overlay)
         compare(control.x, 0)
         compare(control.y, 0)
-- 
2.26.2