diff --git a/app/dock/dockview.cpp b/app/dock/dockview.cpp index 6434c92c2..9831606b6 100644 --- a/app/dock/dockview.cpp +++ b/app/dock/dockview.cpp @@ -1891,6 +1891,19 @@ QVariantList DockView::containmentActions() return actions; } +void DockView::disableGrabItemBehavior() +{ + setMouseGrabEnabled(false); +} + +void DockView::restoreGrabItemBehavior() +{ + setMouseGrabEnabled(true); + + if (mouseGrabberItem()) { + mouseGrabberItem()->ungrabMouse(); + } +} //!BEGIN overriding context menus behavior void DockView::mousePressEvent(QMouseEvent *event) diff --git a/app/dock/dockview.h b/app/dock/dockview.h index fc93b7cb5..33b51cdb4 100644 --- a/app/dock/dockview.h +++ b/app/dock/dockview.h @@ -245,6 +245,9 @@ public slots: void updateAbsDockGeometry(bool bypassChecks = false); + Q_INVOKABLE void disableGrabItemBehavior(); + Q_INVOKABLE void restoreGrabItemBehavior(); + protected slots: void showConfigurationInterface(Plasma::Applet *applet) override; diff --git a/containment/package/contents/ui/main.qml b/containment/package/contents/ui/main.qml index bbc03b08c..dddedfbe1 100644 --- a/containment/package/contents/ui/main.qml +++ b/containment/package/contents/ui/main.qml @@ -29,6 +29,8 @@ import org.kde.kquickcontrolsaddons 2.0 import org.kde.draganddrop 2.0 as DragDrop import org.kde.plasma.plasmoid 2.0 +import org.kde.taskmanager 0.1 as TaskManager + import org.kde.latte 0.1 as Latte import "applet" as Applet @@ -1637,6 +1639,41 @@ DragDrop.DropArea { startCheckRestoreZoomTimer() } } + + onPressed: { + dock.disableGrabItemBehavior(); + drawWindowTimer.start(); + } + + Timer { + id: drawWindowTimer + interval: 350 + onTriggered: { + if (rootMouseArea.pressed) { + tasksModel.requestMove(tasksModel.activeTask); + restoreGrabberTimer.start(); + } else { + dock.restoreGrabItemBehavior(); + } + } + } + + Timer { + id: restoreGrabberTimer + interval: 350 + onTriggered: { + dock.restoreGrabItemBehavior(); + } + } + } + + TaskManager.TasksModel { + id: tasksModel + sortMode: TaskManager.TasksModel.SortVirtualDesktop + groupMode: TaskManager.TasksModel.GroupDisabled + + screenGeometry: plasmoid.screenGeometry + filterByScreen: plasmoid.configuration.showForCurrentScreenOnly } Loader{