@@ -102,22 +102,30 @@ Item {
102102 hoverEnabled: true
103103 onClicked: callHint.visible ? callHint.showLiveCall() : PanelState.focusMaximizedApp()
104104 onDoubleClicked: PanelState.restoreClicked()
105− drag.target: PanelState.maximizedAppDelegate
106− drag.axis: Drag.XAndYAxis
107− drag.minimumX: 0
108− drag.minimumY: panelHeight
109− drag.maximumX: PanelState.maximizedAppDelegate ? PanelState.maximizedAppDelegate.moveHandler.stageWidth : 0
110− drag.maximumY: PanelState.maximizedAppDelegate ? PanelState.maximizedAppDelegate.moveHandler.stageHeight : 0
111− drag.threshold: PanelState.panelHeight
112− drag.filterChildren: true
113− onReleased: {
114− if (drag.active) {
115− var delegate = PanelState.maximizedAppDelegate;
105+
106+ property Item delegate: null // appDelegate that's used to drag-and-restore a maximized window
107+
108+ onPressedChanged: {
109+ if (!delegate && PanelState.maximizedAppDelegate && pressed) {
110+ delegate = PanelState.maximizedAppDelegate;
111+ delegate.moveHandler.handlePressedChanged(true, pressedButtons, mouseX, mouseY);
112+ }
113+ }
114+ onPositionChanged: {
115+ if (delegate && delegate.moveHandler.dragging) {
116116 delegate.restoredX = Math.round(mouse.x - delegate.moveHandler.buttonsWidth);
117117 delegate.restoredY = Math.round(Math.max(mouse.y, PanelState.panelHeight));
118118 delegate.restoreFromMaximized(false);
119119 }
120120 }
121+ onReleased: {
122+ if (delegate) {
123+ delegate.moveHandler.handlePressedChanged(false, pressedButtons, mouseX, mouseY);
124+ delegate.moveHandler.handleReleased(mouse);
125+ delegate.moveHandler.shouldCommitSnapWindow();
126+ delegate = null;
127+ }
128+ }
121129
122130 // WindowControlButtons inside the mouse area, otherwise QML doesn't grok nested hover events :/
123131 // cf. https://bugreports.qt.io/browse/QTBUG-32909