From d283e61b5d9c09140d1370ff4d44d0001cbc34d1 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Sat, 25 May 2019 15:15:19 +0300 Subject: [PATCH] improve DragDrop behavior/responsiveness --- containment/package/contents/ui/DragDropArea.qml | 12 +++++++++++- .../package/contents/ui/applet/AppletItem.qml | 4 ++-- containment/package/contents/ui/main.qml | 7 ++++--- plasmoid/package/contents/ui/task/TaskItem.qml | 2 +- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/containment/package/contents/ui/DragDropArea.qml b/containment/package/contents/ui/DragDropArea.qml index 275ae0c9f..106f92aea 100644 --- a/containment/package/contents/ui/DragDropArea.qml +++ b/containment/package/contents/ui/DragDropArea.qml @@ -36,6 +36,8 @@ DragDrop.DropArea { property bool isSeparator: false property bool isLatteTasks: false property bool onlyLaunchers: false + + property bool computationsAreValid: false } Connections{ @@ -65,9 +67,11 @@ DragDrop.DropArea { //! Give the time when an applet is dropped to be positioned properly Timer { id: clearInfoTimer - interval: 1500 + interval: 100 //dragArea.isForeground ? 100 : 500 onTriggered: { + dragArea.dragInfo.computationsAreValid = false; + dragArea.dragInfo.isTask = false; dragArea.dragInfo.isPlasmoid = false; dragArea.dragInfo.isSeparator = false; @@ -106,6 +110,7 @@ DragDrop.DropArea { dragInfo.isSeparator = isSeparator; dragInfo.isLatteTasks = isLatteTasks; dragInfo.onlyLaunchers = latteApplet ? latteApplet.launchersDrop(event) : false; + dragInfo.computationsAreValid = true; slotAnimationsNeedLength(1); @@ -185,6 +190,11 @@ DragDrop.DropArea { } root.addLaunchersMessage = false; + + if (!isForeground) { + dndSpacer.opacity = 0; + dndSpacer.parent = root; + } } onDrop: { diff --git a/containment/package/contents/ui/applet/AppletItem.qml b/containment/package/contents/ui/applet/AppletItem.qml index e2ca748f1..b7ceb6464 100644 --- a/containment/package/contents/ui/applet/AppletItem.qml +++ b/containment/package/contents/ui/applet/AppletItem.qml @@ -167,7 +167,7 @@ Item { property int oldY: y onXChanged: { - if (movingForResize || !root.dragInfo.entered) { + if (!foreDropArea.visible || movingForResize || !root.dragInfo.entered) { movingForResize = false; return; } @@ -192,7 +192,7 @@ Item { } onYChanged: { - if (movingForResize || !root.dragInfo.entered) { + if (!foreDropArea.visible || movingForResize || !root.dragInfo.entered) { movingForResize = false; return; } diff --git a/containment/package/contents/ui/main.qml b/containment/package/contents/ui/main.qml index cb83f2690..52afe16a9 100644 --- a/containment/package/contents/ui/main.qml +++ b/containment/package/contents/ui/main.qml @@ -1723,6 +1723,9 @@ Item { DragDropArea { id: backDropArea anchors.fill: parent + readonly property bool higherPriority: latteView && latteView.containsDrag + && ((root.dragInfo.isPlasmoid && root.dragInfo.isSeparator) + || (foreDropArea.dragInfo.computationsAreValid && !root.dragInfo.isPlasmoid && !root.dragInfo.onlyLaunchers)) Item{ id: panelBox @@ -1740,9 +1743,7 @@ Item { DragDropArea { id: foreDropArea anchors.fill: parent - visible: latteView && latteView.containsDrag - && ((root.dragInfo.isPlasmoid && !root.dragInfo.isSeparator) - || (root.addLaunchersInTaskManager && root.dragInfo.onlyLaunchers)) + visible: !backDropArea.higherPriority isForeground: true /* Rectangle { diff --git a/plasmoid/package/contents/ui/task/TaskItem.qml b/plasmoid/package/contents/ui/task/TaskItem.qml index 89db1fbe5..7cb07536e 100644 --- a/plasmoid/package/contents/ui/task/TaskItem.qml +++ b/plasmoid/package/contents/ui/task/TaskItem.qml @@ -571,7 +571,7 @@ MouseArea{ root.separatorsUpdated(); if (tasksExtendedManager.isLauncherToBeMoved(launcherUrl) && itemIndex>=0) { - parabolicManager.moveLauncherToCorrectPos(launcherUrl, itemIndex); + tasksExtendedManager.moveLauncherToCorrectPos(launcherUrl, itemIndex); } } else { root.separatorsUpdated();