musescore / musescore/MuseScore

Use Shift + Drag to lock dragging to horizontal/vertical planes (instead of Shift/Ctrl)

Open
#34,296 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

community P2 UX/interaction
Dominant language
C++
Stars
15.1k
Forks
3.3k
Avg merge
2d 2h
Merged PRs (30d)
91

Description

Task

Currently, holding Shift while dragging an object locks movement to the vertical plane, and holding Ctrl while dragging locks movement to the horizontal plane.

The much more common and simpler pattern for this type of locking behavior is to hold Shift for both vertical and horizontal dragging. This restricts movement up, down, left, or right depending on where you move the mouse with a single modifier.

See this example of the behavior in Figma:

https://github.com/user-attachments/assets/20fc33e6-d5a6-4504-a7bc-4cfc8d0443f7

  • While shift is continually held, the object moves to the axis closest to the mouse, allowing free movement between any of them
  • When shift is released during the drag, the object moves to the mouse's position. Holding shift again while maintaining the drag again snaps the object back to an axis.

This should apply to all objects the existing behavior is compatible with.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the existing Shift/Ctrl modifier handling for object dragging in the MuseScore codebase. Verify the behavior across all objects supported by the current implementation: Shift should select the nearest horizontal or vertical axis, releasing Shift should allow the object to follow the mouse, and pressing it again should restore axis snapping.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
50/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.