From 12d6302fc33e540800349439ddc06684025204e7 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Tue, 19 May 2020 10:50:00 +0300 Subject: [PATCH] fix binding loops and warnings --- .../contents/ui/applet/ItemWrapper.qml | 48 ++++++++++++------- plasmoid/package/contents/ui/main.qml | 39 +++++++++++---- .../ui/taskslayout/ScrollPositioner.qml | 10 ++-- 3 files changed, 65 insertions(+), 32 deletions(-) diff --git a/containment/package/contents/ui/applet/ItemWrapper.qml b/containment/package/contents/ui/applet/ItemWrapper.qml index acf00d6db..247b96e48 100644 --- a/containment/package/contents/ui/applet/ItemWrapper.qml +++ b/containment/package/contents/ui/applet/ItemWrapper.qml @@ -301,38 +301,50 @@ Item{ Item{ id:_wrapperContainer - width: root.isHorizontal ? _length : _thickness height: root.isHorizontal ? _thickness : _length opacity: appletShadow.active ? 0 : 1 - property int _length: { - if (appletItem.isAutoFillApplet && (appletItem.maxAutoFillLength>-1)){ - return wrapper.length; - } + property int _length:0 // through Binding to avoid binding loops + property int _thickness:0 // through Binding to avoid binding loops + readonly property int appliedEdgeMargin: { if (appletItem.isInternalViewSplitter) { - return wrapper.layoutLength; + return appletItem.metrics.margin.screenEdge + appletItem.metrics.margin.thickness; } - return wrapper.zoomScaleLength * wrapper.layoutLength; + return appletItem.screenEdgeMarginSupported ? 0 : appletItem.metrics.margin.screenEdge; } - property int _thickness: { - if (appletItem.isInternalViewSplitter) { - return wrapper.layoutThickness; - } + Binding { + target: _wrapperContainer + property: "_thickness" + when: !visibilityManager.inTempHiding + value: { + if (appletItem.isInternalViewSplitter) { + return wrapper.layoutThickness; + } - var wrapperContainerThickness = wrapper.zoomScaleThickness * (appletItem.metrics.totals.thickness); - return appletItem.screenEdgeMarginSupported ? wrapperContainerThickness + appletItem.metrics.margin.screenEdge : wrapperContainerThickness; + var wrapperContainerThickness = wrapper.zoomScaleThickness * (appletItem.metrics.totals.thickness); + return appletItem.screenEdgeMarginSupported ? wrapperContainerThickness + appletItem.metrics.margin.screenEdge : wrapperContainerThickness; + } } - readonly property int appliedEdgeMargin: { - if (appletItem.isInternalViewSplitter) { - return appletItem.metrics.margin.screenEdge + appletItem.metrics.margin.thickness; - } + Binding { + target: _wrapperContainer + property: "_length" + when: !visibilityManager.inTempHiding + value: { + if (appletItem.isAutoFillApplet && (appletItem.maxAutoFillLength>-1)){ + return wrapper.length; + } - return appletItem.screenEdgeMarginSupported ? 0 : appletItem.metrics.margin.screenEdge; + if (appletItem.isInternalViewSplitter) { + return wrapper.layoutLength; + } + + return wrapper.zoomScaleLength * wrapper.layoutLength; + } } ///Secret MouseArea to be used by the folder widget diff --git a/plasmoid/package/contents/ui/main.qml b/plasmoid/package/contents/ui/main.qml index c91867b27..020ba9bb5 100644 --- a/plasmoid/package/contents/ui/main.qml +++ b/plasmoid/package/contents/ui/main.qml @@ -1192,18 +1192,13 @@ Item { TasksLayout.ScrollableList { id: scrollableList - width: !root.vertical ? Math.min(root.width, icList.width) : thickness - height: root.vertical ? Math.min(root.height, icList.height) : thickness + width: !root.vertical ? length : thickness + height: root.vertical ? length : thickness contentWidth: icList.width contentHeight: icList.height - property int thickness: { - if (latteView) { - return animations.hasThicknessAnimation ? latteView.maskManager.thicknessZoom : latteView.maskManager.thicknessNormal; - } - - return metrics.totals.thickness * parabolic.factor.zoom; - } + property int thickness:0 // through Binding to avoid binding loops + property int length:0 // through Binding to avoid binding loops //onCurrentPosChanged: console.log("CP :: "+ currentPos + " icW:"+icList.width + " rw: "+root.width + " w:" +width); @@ -1215,6 +1210,32 @@ Item { } } + Binding { + target: scrollableList + property: "thickness" + when: latteView && !latteView.maskManager.inTempHiding + value: { + if (latteView) { + return animations.hasThicknessAnimation ? latteView.maskManager.thicknessZoom : latteView.maskManager.thicknessNormal; + } + + return metrics.totals.thickness * parabolic.factor.zoom; + } + } + + Binding { + target: scrollableList + property: "length" + when: latteView && !latteView.maskManager.inTempHiding + value: { + if (root.vertical) { + return Math.min(root.height, icList.height) + } + + return Math.min(root.width, icList.width); + } + } + TasksLayout.ScrollPositioner { id: listViewBase diff --git a/plasmoid/package/contents/ui/taskslayout/ScrollPositioner.qml b/plasmoid/package/contents/ui/taskslayout/ScrollPositioner.qml index 460faef39..9a776ddea 100644 --- a/plasmoid/package/contents/ui/taskslayout/ScrollPositioner.qml +++ b/plasmoid/package/contents/ui/taskslayout/ScrollPositioner.qml @@ -36,15 +36,13 @@ Rectangle { } else if (root.alignment === LatteCore.Types.Right){ return icList.width; } - } else { - return 0; } + + return 0; } y: { - if (!root.vertical) { - return 0; - } else { + if (root.vertical) { if (root.alignment === LatteCore.Types.Center) { return icList.height / 2; } else if (root.alignment === LatteCore.Types.Top){ @@ -53,6 +51,8 @@ Rectangle { return icList.height; } } + + return 0; } width: !root.vertical ? 1 : scrollableList.width