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{