(msWindow: MsWindow)
| 141 | } |
| 142 | |
| 143 | startDrag(msWindow: MsWindow) { |
| 144 | global.stage.add_child(this.inputGrabber); |
| 145 | const originalParent = assertNotNull(msWindow.get_parent()); |
| 146 | msWindow.freezeAllocation(); |
| 147 | this.msWindowManager.msWindowList.forEach((aMsWindow) => { |
| 148 | aMsWindow.updateMetaWindowVisibility(); |
| 149 | }); |
| 150 | const [globalX, globalY] = global.get_pointer(); |
| 151 | const [_, relativeX, relativeY] = msWindow.transform_stage_point( |
| 152 | globalX, |
| 153 | globalY |
| 154 | ); |
| 155 | |
| 156 | this.dragInProgress = { |
| 157 | msWindow, |
| 158 | originPointerAnchor: [ |
| 159 | relativeX! / msWindow.width, |
| 160 | relativeY! / msWindow.height, |
| 161 | ], |
| 162 | originalParent, |
| 163 | }; |
| 164 | Me.layout!.setActorAbove(msWindow); |
| 165 | this.checkUnderThePointerRoutine(); |
| 166 | msWindow.set_position( |
| 167 | Math.round( |
| 168 | globalX - |
| 169 | msWindow.width * this.dragInProgress.originPointerAnchor[0] |
| 170 | ), |
| 171 | Math.round( |
| 172 | globalY - |
| 173 | msWindow.height * this.dragInProgress.originPointerAnchor[1] |
| 174 | ) |
| 175 | ); |
| 176 | this.msWindowManager.msFocusManager.pushModal(this.inputGrabber); |
| 177 | Me.msThemeManager!.setCursor(Meta.Cursor.DND_IN_DRAG); |
| 178 | } |
| 179 | |
| 180 | endDrag() { |
| 181 | assert(this.dragInProgress !== null, 'No drag in progress'); |
no test coverage detected