musescore / musescore/MuseScore
Undo should recall the mode/selection you had on the last step
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 15.1k
- Forks
- 3.3k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 91
Description
Your idea
Recall the mode or selection state that was last in play when undo or redo are used, so that undo can be used seamlessly in combination with other keyboard interactions.
Problem to be solved
Undo and redo don't reliably return you to the mode you were in before the last action taken. This prevents you from running certain commands without reselecting an element or changing modes.
Examples:
Undoing shift + arrow actions on a hairpin
- Insert a hairpin
- Hold shift and press the right arrow several times to extend it
- Press undo
- Instead of returning the hairpin to its editable state (with the handles showing), it is no longer selected. It must be reselected before you can use the shift + arrow key interaction again.
Adding text from note input mode
- Write some notes
- Press Cmd + T to insert a text frame (at this point, you're still in note input mode)
- Type in text
- Press esc to end editing
- Press undo
- The note is selected, but it's not in note input mode
https://github.com/musescore/MuseScore/assets/20806406/96f07274-c7c1-4d7e-806e-65536ce3a643
Prior art
Figma does this. They even go so far as to include different selections made in the undo stack, which I find useful.
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 tracing the undo and redo interactions described in the examples, including shift+arrow editing and Cmd+T from note input mode. Compare the mode and selection state before and after each action; done means undo and redo restore the relevant prior state without requiring reselection or mode changes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100