MCPcopy Create free account
hub / github.com/material-shell/material-shell / startDrag

Method startDrag

src/manager/msDndManager.ts:143–178  ·  view source on GitHub ↗
(msWindow: MsWindow)

Source from the content-addressed store, hash-verified

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');

Callers 3

constructorMethod · 0.95
makeActorDraggableMethod · 0.80

Calls 13

assertNotNullFunction · 0.90
freezeAllocationMethod · 0.80
transform_stage_pointMethod · 0.80
setActorAboveMethod · 0.80
roundMethod · 0.80
pushModalMethod · 0.80
setCursorMethod · 0.80
add_childMethod · 0.65
get_parentMethod · 0.65
get_pointerMethod · 0.65

Tested by

no test coverage detected