| 4498 | } |
| 4499 | |
| 4500 | export function grabBegin(metaWindow, type) { |
| 4501 | switch (type) { |
| 4502 | case Meta.GrabOp.COMPOSITOR: |
| 4503 | case Meta.GrabOp.FRAME_BUTTON: |
| 4504 | // Don't handle pushModal grabs and SCD button (close/minimize/etc.) grabs |
| 4505 | break; |
| 4506 | case Meta.GrabOp.KEYBOARD_MOVING: |
| 4507 | inGrab = new Grab.MoveGrab(metaWindow, type); |
| 4508 | if (!isTiled(metaWindow)) { |
| 4509 | return; |
| 4510 | } |
| 4511 | |
| 4512 | // NOTE: Keyboard grab moves the cursor, but it happens after grab |
| 4513 | // signals have run. Simply delay the dnd so it will get the correct |
| 4514 | // pointer coordinates. |
| 4515 | Utils.later_add(Meta.LaterType.IDLE, () => { |
| 4516 | inGrab.begin(); |
| 4517 | inGrab.beginDnD(); |
| 4518 | }); |
| 4519 | break; |
| 4520 | case Meta.GrabOp.MOVING: |
| 4521 | case Meta.GrabOp.MOVING_UNCONSTRAINED: // introduced in Gnome 44 |
| 4522 | if (!isTiled(metaWindow)) { |
| 4523 | return; |
| 4524 | } |
| 4525 | |
| 4526 | inGrab = new Grab.MoveGrab(metaWindow, type); |
| 4527 | |
| 4528 | if (Utils.getModiferState() & Clutter.ModifierType.CONTROL_MASK) { |
| 4529 | inGrab.begin(); |
| 4530 | inGrab.beginDnD(); |
| 4531 | } else if (inGrab.initialSpace && inGrab.initialSpace.indexOf(metaWindow) > -1) { |
| 4532 | inGrab.begin(); |
| 4533 | } |
| 4534 | |
| 4535 | break; |
| 4536 | case Meta.GrabOp.RESIZING_NW: |
| 4537 | case Meta.GrabOp.RESIZING_N: |
| 4538 | case Meta.GrabOp.RESIZING_NE: |
| 4539 | case Meta.GrabOp.RESIZING_E: |
| 4540 | case Meta.GrabOp.RESIZING_SW: |
| 4541 | case Meta.GrabOp.RESIZING_S: |
| 4542 | case Meta.GrabOp.RESIZING_SE: |
| 4543 | case Meta.GrabOp.RESIZING_W: |
| 4544 | case Meta.GrabOp.KEYBOARD_RESIZING_UNKNOWN: |
| 4545 | case Meta.GrabOp.KEYBOARD_RESIZING_NW: |
| 4546 | case Meta.GrabOp.KEYBOARD_RESIZING_N: |
| 4547 | case Meta.GrabOp.KEYBOARD_RESIZING_NE: |
| 4548 | case Meta.GrabOp.KEYBOARD_RESIZING_E: |
| 4549 | case Meta.GrabOp.KEYBOARD_RESIZING_SW: |
| 4550 | case Meta.GrabOp.KEYBOARD_RESIZING_S: |
| 4551 | case Meta.GrabOp.KEYBOARD_RESIZING_SE: |
| 4552 | case Meta.GrabOp.KEYBOARD_RESIZING_W: |
| 4553 | inGrab = new Grab.ResizeGrab(); |
| 4554 | break; |
| 4555 | } |
| 4556 | } |
| 4557 | |