musescore / musescore/MuseScore
Use Shift + Drag to lock dragging to horizontal/vertical planes (instead of Shift/Ctrl)
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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