From 82dc80179febe22463d258ffe3e35edaa89a54d6 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Mon, 3 Jan 2022 22:57:33 +0200 Subject: [PATCH] justify:offset centered applets if overlap --- .../contents/ui/layouts/LayoutsContainer.qml | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/containment/package/contents/ui/layouts/LayoutsContainer.qml b/containment/package/contents/ui/layouts/LayoutsContainer.qml index a6f553a30..fcfb7bab4 100644 --- a/containment/package/contents/ui/layouts/LayoutsContainer.qml +++ b/containment/package/contents/ui/layouts/LayoutsContainer.qml @@ -288,7 +288,7 @@ Item{ return background.offset + lengthTailPadding; } - return (root.myView.alignment === LatteCore.Types.Justify) ? 0 : background.offset + return (root.myView.alignment === LatteCore.Types.Justify) ? inJustifyCenterOffset : background.offset } readonly property bool centered: (root.myView.alignment === LatteCore.Types.Center) || (root.myView.alignment === LatteCore.Types.Justify) @@ -297,6 +297,7 @@ Item{ //! do not update during dragging/moving applets inConfigureAppletsMode readonly property bool offsetUpdateIsBlocked: ((root.dragOverlay && root.dragOverlay.pressed) || layouter.appletsInParentChange) property bool isCoveredFromBothSideLayouts: false + property int inJustifyCenterOffset: 0 alignment: { if (plasmoid.location === PlasmaCore.Types.LeftEdge) { @@ -365,6 +366,33 @@ Item{ return (startLayout.length + endLayout.length) > (root.maxLength); } } + + Binding{ + target: _mainLayout + property:"inJustifyCenterOffset" + when: !_mainLayout.offsetUpdateIsBlocked && layouter.inNormalFillCalculationsState + value: { + if (root.myView.alignment !== LatteCore.Types.Justify) { + return 0; + } + + var layoutMaxLength = root.maxLength / 2; + var sideLayoutMaxLength = layoutMaxLength - mainLayout.length/2; + var sideslength = startLayout.length + endLayout.length; + + if (sideslength > root.maxLength) { + return 0; + } + + if (startLayout.length > sideLayoutMaxLength) { + return (startLayout.length - sideLayoutMaxLength); + } else if (endLayout.length > sideLayoutMaxLength) { + return -(endLayout.length - sideLayoutMaxLength); + } + + return 0; + } + } } AppletsContainer {