I've put what I talked about onto new branch, ornaments-plus
Some notes:
* New ornament commands in Notation editor
* Show ornament expansion
* Adopts a temporary segment containing ornament's expansion.
* Edit ornament inline
* Adopts a temporary segment linked to ornament.
* Skip this part of ornament (mask tied note)
* Don't skip this part (unmask tied note)
* New command in Notation's segment
* Unadopt a segment
* New Command classes
* AdoptSegmentCommand
* CutToTriggerSegmentCommand
* MaskTriggerCommand
* New tool, though 99% of the code is shared with NotationSelector:
Select without ties. It's intended to make editing tied notes easier
than the current procedure of "untie them, edit, select them all, and
retie them". In addition to being useful here, I think this will make it
simpler to change the duration of tied notes.
* Some old bugs I squashed along the way:
* Selection used to become unresponsive when a segment you're
notation-viewing is deleted; menus would grey out selection commands,
etc. That was because a signal gets disconnected (by scene being
deleted) and never got reconnected. Fixed.
* Making ornaments. You know how "Make ornament" often just did not
make an ornament, and then it would (sometimes) if you did it a second
time? What was going on is that two subcommands of a Macrocommand
(CopyCommand, PasteToTriggerSegmentCommand) tried to share a clipboard,
but doing that doesn't work. PasteToTriggerSegmentCommand got a fresh
copy of the current clipboard, so even though CopyCommand copied to
clipboard, PasteToTriggerSegmentCommand never saw it; its clipboard
stayed empty. That's why the command sometimes worked the second time:
it saw the clipboard contents that were left from the first time.
So I replaced it with a new command CutToTriggerSegmentCommand that
does what the old macro command did, but sees a single clipboard.
It's a BasicSelectionCommand and shares a worker class with
PasteToTriggerSegmentCommand and calls a new static function in
EraseCommand.
The old InsertTriggerNoteCommand is now unused everywhere.
* If you made ornament with an unusual duration, say 5 1/8 notes, the
trigger note got the wrong duration. That was because it decided what
Note (NotationType) to make far earlier than it had to. Fixed. Now it
just uses duration and lets SegmentNotationHelper do the work of making
a viable note.
* StaffHeader "clash warning" windows used to stay up forever, even
after you'd closed Rosegarden. Fixed.
* I had planned to use a double loop around the existing trigger segment
expander, but it turned out it made more sense to do it as a single loop
that kept track of whether the current time was masked/unmasked.
* New internal functionality for NotationView: Adopt a temporary segment.
* For safety, Segment now internally knows whether it "really"
participates in the composition; for instance, "cloned repeats" in
Notation don't. I made setTrack check that.
* Moved mergeTriggerSegment into TriggerSegment, refactoring my older code.
* Rewrote ControllerContext to not assume it's called from an
InternalSegmentMapper.
* Everything else is pretty much what I said earlier, so I won't bore you
by repeating it here.
Tom Breton (Tehom)
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Rosegarden-devel mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel