diff --git a/containment/package/contents/ui/ParabolicManager.qml b/containment/package/contents/ui/ParabolicManager.qml index 693a4c507..18bce67d9 100644 --- a/containment/package/contents/ui/ParabolicManager.qml +++ b/containment/package/contents/ui/ParabolicManager.qml @@ -20,6 +20,9 @@ import QtQuick 2.0 +import org.kde.plasma.plasmoid 2.0 +import org.kde.plasma.core 2.0 as PlasmaCore + // holds all the logic around parabolic effect signals into one place. // ParabolicManager is responsible for triggering all the messages to applets // that are neighbour to the hovered applet. This will help a lot to catch cases @@ -209,7 +212,7 @@ Item { // no, -1 = remove separator // no, no = update separator position function setSeparator(previousId, nextId) { - if (previousId === nextId) + if (previousId === nextId && separators.indexOf(nextId)>-1) return; var update=false; @@ -229,8 +232,10 @@ Item { separators.push(nextId); } + //if (plasmoid.location === PlasmaCore.Types.BottomEdge) + // console.log("separators : "+separators); + root.separatorsUpdated(); - // console.log("separators : "+separators); } // update the registered hidden applets diff --git a/containment/package/contents/ui/applet/AppletItem.qml b/containment/package/contents/ui/applet/AppletItem.qml index 73d7b3c21..490748c73 100644 --- a/containment/package/contents/ui/applet/AppletItem.qml +++ b/containment/package/contents/ui/applet/AppletItem.qml @@ -59,7 +59,7 @@ Item { property bool isHidden: applet && applet.status === PlasmaCore.Types.HiddenStatus ? true : false property bool isInternalViewSplitter: (internalSplitterId > 0) property bool isZoomed: false - property bool isSeparator: applet && applet.pluginName === "audoban.applet.separator" ? true : false + property bool isSeparator: applet && applet.pluginName === "audoban.applet.separator" //applet is in starting edge /*property bool startEdge: index < layoutsContainer.endLayout.beginIndex ? (index === 0)&&(layoutsContainer.mainLayout.count > 1) : @@ -98,7 +98,7 @@ Item { property string title: isInternalViewSplitter ? "Now Dock Splitter" : "" - property Item applet + property Item applet: null property Item latteApplet: applet && (applet.pluginName === root.plasmoidName) ? (applet.children[0] ? applet.children[0] : null) : null property Item appletWrapper: applet && @@ -265,14 +265,16 @@ Item { parabolicManager.setSeparator(previousIndex, index); } - previousIndex = index; + if (index>-1) { + previousIndex = index; + } } onIsHiddenChanged: { if (isHidden) { parabolicManager.setHidden(-1, index); } else { - parabolicManager.setHidden(index, -1); + parabolicManager.setHidden(previousIndex, -1); } } @@ -280,7 +282,7 @@ Item { if (isSeparator) { parabolicManager.setSeparator(-1, index); } else { - parabolicManager.setSeparator(index, -1); + parabolicManager.setSeparator(previousIndex, -1); } } @@ -315,6 +317,13 @@ Item { } Component.onDestruction: { + if (isSeparator){ + parabolicManager.setSeparator(previousIndex, -1); + } + + if (isHidden) + parabolicManager.setHidden(previousIndex, -1); + root.updateIndexes.disconnect(checkIndex); root.clearZoomSignal.disconnect(clearZoom); } @@ -370,7 +379,7 @@ Item { color: "transparent" border.color: "green" border.width: 1 - } */ + }*/ Flow{ id: appletFlow @@ -401,8 +410,9 @@ Item { property bool neighbourSeparator: false; //in case there is a neighbour internal separator - property int separatorSpace: (root.latteApplet && (root.latteApplet.internalSeparatorPos === root.tasksCount-1) && index===root.latteAppletPos+1) - || neighbourSeparator ? (2+root.iconMargin/2) : 0 + property int separatorSpace: (root.latteApplet && root.latteApplet.hasInternalSeparator + && (root.latteApplet.internalSeparatorPos === root.tasksCount-1) && index===root.latteAppletPos+1) + || (neighbourSeparator && !container.isSeparator && !container.latteApplet) ? (2+root.iconMargin/2) : 0 property real nHiddenSize: (nScale > 0) ? (container.spacersMaxSize * nScale) + separatorSpace : separatorSpace property real nScale: 0 @@ -455,8 +465,9 @@ Item { property bool neighbourSeparator: false; //in case there is a neighbour internal separator - property int separatorSpace: (root.latteApplet && root.latteApplet.internalSeparatorPos === 0 && index===root.latteAppletPos-1) - || neighbourSeparator ? (2+root.iconMargin/2) : 0 + property int separatorSpace: (root.latteApplet && root.latteApplet.hasInternalSeparator + && root.latteApplet.internalSeparatorPos === 0 && index===root.latteAppletPos-1) + || (neighbourSeparator && !container.isSeparator && !container.latteApplet) ? (2+root.iconMargin/2) : 0 property real nHiddenSize: (nScale > 0) ? (container.spacersMaxSize * nScale) + separatorSpace : separatorSpace property real nScale: 0 diff --git a/containment/package/contents/ui/applet/AppletItemWrapper.qml b/containment/package/contents/ui/applet/AppletItemWrapper.qml index 542bee148..8eaf206fb 100644 --- a/containment/package/contents/ui/applet/AppletItemWrapper.qml +++ b/containment/package/contents/ui/applet/AppletItemWrapper.qml @@ -38,7 +38,7 @@ Item{ if (container.isSeparator && !root.editMode) { if (!root.isVertical) - return 0.01; + return -1; else return root.iconSize; } @@ -66,7 +66,7 @@ Item{ if (container.isSeparator && !root.editMode) { if (root.isVertical) - return 0.01; + return -1; else return root.iconSize; } diff --git a/plasmoid/package/contents/ui/task/TaskDelegate.qml b/plasmoid/package/contents/ui/task/TaskDelegate.qml index 21edc785b..e989bff2c 100644 --- a/plasmoid/package/contents/ui/task/TaskDelegate.qml +++ b/plasmoid/package/contents/ui/task/TaskDelegate.qml @@ -255,6 +255,13 @@ MouseArea{ } } + /* Rectangle{ + anchors.fill: parent + color: "transparent" + border.width: 1 + border.color: "blue" + } */ + Flow{ id: taskFlow width: parent.width @@ -270,14 +277,26 @@ MouseArea{ visible: (index === 0) || (separatorSpace > 0) + property bool neighbourSeparator: false //in case there is a neighbour separator property int separatorSpace: (parabolicManager.hasInternalSeparator - && parabolicManager.internalSeparatorPos === index-1) ? - (2+root.iconMargin/2) : 0 + && parabolicManager.internalSeparatorPos === index-1) + || neighbourSeparator ? (2+root.iconMargin/2) : 0 property real nHiddenSize: (nScale > 0) ? (mainItemContainer.spacersMaxSize * nScale) + separatorSpace : separatorSpace property real nScale: 0 + Connections{ + target: latteDock + onSeparatorsUpdated: { + hiddenSpacerLeft.neighbourSeparator = latteDock.parabolicManager.isSeparator(latteDock.latteAppletPos-1) && index===0; + } + + onLatteAppletPosChanged: { + hiddenSpacerLeft.neighbourSeparator = latteDock.parabolicManager.isSeparator(latteDock.latteAppletPos-1) && index===0; + } + } + Behavior on nScale { enabled: !root.globalDirectRender NumberAnimation { duration: 3 * mainItemContainer.animationTime } @@ -288,7 +307,7 @@ MouseArea{ NumberAnimation { duration: root.directRenderAnimationTime } } - /*Rectangle{ + /* Rectangle{ width: !root.vertical ? parent.width : 1 height: !root.vertical ? 1 : parent.height x: root.vertical ? parent.width /2 : 0 @@ -296,7 +315,7 @@ MouseArea{ border.width: 1 border.color: "red" color: "transparent" - }*/ + } */ } TaskWrapper{ id: wrapper } @@ -310,14 +329,26 @@ MouseArea{ visible: (index === icList.count - 1) || (separatorSpace > 0) + property bool neighbourSeparator: false //in case there is a neighbour separator property int separatorSpace: (parabolicManager.hasInternalSeparator - && parabolicManager.internalSeparatorPos === index+1) ? - (2+root.iconMargin/2) : 0 + && parabolicManager.internalSeparatorPos === index+1) + || neighbourSeparator ? (2+root.iconMargin/2) : 0 property real nHiddenSize: (nScale > 0) ? (mainItemContainer.spacersMaxSize * nScale) + separatorSpace : separatorSpace property real nScale: 0 + Connections{ + target: latteDock + onSeparatorsUpdated: { + hiddenSpacerRight.neighbourSeparator = latteDock.parabolicManager.isSeparator(latteDock.latteAppletPos+1) && index===root.tasksCount-1; + } + + onLatteAppletPosChanged: { + hiddenSpacerRight.neighbourSeparator = latteDock.parabolicManager.isSeparator(latteDock.latteAppletPos+1) && index===root.tasksCount-1; + } + } + Behavior on nScale { enabled: !root.globalDirectRender NumberAnimation { duration: 3 * mainItemContainer.animationTime } @@ -328,7 +359,7 @@ MouseArea{ NumberAnimation { duration: root.directRenderAnimationTime } } - /*Rectangle{ + /* Rectangle{ width: !root.vertical ? parent.width : 1 height: !root.vertical ? 1 : parent.height x: root.vertical ? parent.width /2 : 0