@@ -13,21 +13,20 @@ PopupWindow {
1313
1414 property real xOffset: 0
1515 property real yOffset: 0
16+ property real positionXOffset: xOffset
17+ property real positionYOffset: yOffset
1618 property int margins: 10
1719 property int windowThemeType: D .ApplicationHelper .LightType
1820 readonly property bool darkTheme: root .windowThemeType === D .ApplicationHelper .DarkType
1921 property Item currentItem
20- property int requestedWidth: 10
21- property int requestedHeight: 10
22+ property bool geometryUpdatePending: false
2223 signal requestUpdateGeometry ()
2324 signal updateGeometryFinished ()
2425
2526 // order to update screen and (x,y)
2627 property var updateGeometryer : function updateGeometry ()
2728 {
28- if (root .requestedWidth <= 10 || root .requestedHeight <= 10 ) {
29- root .width = root .requestedWidth ;
30- root .height = root .requestedHeight ;
29+ if (root .width <= 10 || root .height <= 10 ) {
3130 return ;
3231 }
3332 if (! root .transientParent )
@@ -38,12 +37,10 @@ PopupWindow {
3837
3938 let bounding = Qt .rect (root .screen .virtualX + margins, root .screen .virtualY + margins,
4039 root .screen .width - margins * 2 , root .screen .height - margins * 2 )
41- let pos = Qt .point (transientParent ? transientParent .x + xOffset : xOffset,
42- transientParent ? transientParent .y + yOffset : yOffset)
43- let newX = selectValue (pos .x , bounding .left , bounding .right - root .requestedWidth )
44- let newY = selectValue (pos .y , bounding .top , bounding .bottom - root .requestedHeight )
45-
46- root .setWindowGeometry (newX, newY, root .requestedWidth , root .requestedHeight )
40+ let pos = Qt .point (transientParent ? transientParent .x + positionXOffset : positionXOffset,
41+ transientParent ? transientParent .y + positionYOffset : positionYOffset)
42+ x = selectValue (pos .x , bounding .left , bounding .right - root .width )
43+ y = selectValue (pos .y , bounding .top , bounding .bottom - root .height )
4744 }
4845
4946 function selectValue (value , min , max ) {
@@ -93,8 +90,6 @@ PopupWindow {
9390 if (root .visible )
9491 return
9592 currentItem = null
96- root .requestedWidth = 10
97- root .requestedHeight = 10
9893 root .width = 10
9994 root .height = 10
10095 DS .closeChildrenWindows (root)
@@ -128,18 +123,20 @@ PopupWindow {
128123 }
129124 }
130125
131- onRequestedHeightChanged: {
132- requestUpdateGeometry ()
133- }
134- onRequestedWidthChanged: {
135- requestUpdateGeometry ()
136- }
137- onXOffsetChanged: requestUpdateGeometry ()
138- onYOffsetChanged: requestUpdateGeometry ()
126+ onHeightChanged: requestUpdateGeometry ()
127+ onWidthChanged: requestUpdateGeometry ()
128+ onPositionXOffsetChanged: requestUpdateGeometry ()
129+ onPositionYOffsetChanged: requestUpdateGeometry ()
139130
140131 onRequestUpdateGeometry: {
141132 if (updateGeometryer) {
133+ if (geometryUpdatePending) {
134+ return
135+ }
136+
137+ geometryUpdatePending = true
142138 Qt .callLater (function () {
139+ geometryUpdatePending = false
143140 updateGeometryer ()
144141 updateGeometryFinished ()
145142 })
0 commit comments