[r12145] by yguillemot
Quick and dirty fix for the crash when opening all segments of bogus-surf-jam
[r12144] by yguillemot
* Add Ian's implementation of the segments symlink.
* Show repeated segments in gray colour in notation editor.
* To achieve this, modify a bit Ian's code:
- There is no more central reference segment outside the visible composition.
- The original segment if now used as the reference segment and is keeped
- LinkedSegmentReference and LinkedSegment classes are no more derived from
- The referencer (LinkedSegmentReferencer) contains the links to all the clones.
- The reference segment is a link to itself and it owns both a referencer and
[r12143] by dmmcintyr
patch from J. P. Morris in connection with #3109133
[r12142] by gzoumix
Also removing the deprecated constructor in LineEdit
[r12141] by gzoumix
Also removing the deprecated constructor in LineEdit
[r12140] by gzoumix
Modified the InsertTupletDialog to have SpinBoxes, and also the tuplet.png (with my limited gimp skills) for the button to look better
[r12139] by cannam
* Correct some comments
[r12138] by cannam
* Some layout fixes to TupletDialog and InsertTupletDialog; remove redundant includes
[r12137] by cannam
* Correct "Insert rest" to "Insert Rest"
[r12136] by gzoumix
Adding an insertion mode for general tuplets
[r12135] by dmmcintyr
nice little triplet time beaming incremental improvement from Colin Fletcher
[r12134] by tedfelix
Holding down Ctrl while dragging in the loop ruler now causes the playback
[r12133] by alvarudras
added QGLWidget() to Panned.cpp constructor and edited acinclude.m4 to include and link against QtOpenGL
[r12132] by alvarudras
Branch for experimenting with QGlWidget.
[r12131] by cannam
* Enable QGraphicsView::IndirectPainting mode on Panner.
Why? Because we have our own implementation of drawItems() which uses
Thanks, guys. No really, _thanks_. No, thank _you_.
[r12130] by dmmcintyr
Single sweep selecitons are working now.
Shift+sweep selections are not, but at a glance seem to be triggering familiar
Shift+click and shift+sweep on already selected elements is still broken, and
This code is getting more and more messy, essentially copying the same block of
I guess I should test that, and if it's grotesque, I should probably start
[r12129] by dmmcintyr
Reverse-iterate in what is apparently the correct way, with the -- operator
Make shift+click to create composite selections work the same way as single
If you shift+click to select a long series of ties, then shift+click on one of
Sweep selections are not handled yet.
[r12128] by iangardner
Fix for small bug in NotationScene found by Yves when testing linked segments in the notation editor. As Yves reports - "This bug exists in trunk but seems harmless while not playing with linked segments."
[r12127] by iangardner
Removing a couple of asserts which a) weren't adding very much and b) were preventing debug compilation
[r12126] by dmmcintyr
Skip indications in spilt-by-pitch. It's technically something that could cause
[r12125] by dmmcintyr
More work on handling ties in the matrix.
* Shift+clicking to add to selection does not invoke tie checking
* Drag selection does not invoke tie checking
* Sometimes clicking the right most in a pair of tied notes actually
I don't yet have a real plan for addressing any of the above, and I figure this
[r12124] by iangardner
Prototype implementation of one possible way of doing linked segments. Test functionality is to do a select mode control-middle-click-drag to make a linked copy of an existing segment, and to do a select mode control-left-click-drag to make an unlinked copy of a linked segment.
LinkedSegment - derived from segment, and lives in the composition like a regular segment. It has a QSharedPointer to a LinkedSegmentReference - LinkedSegments which are linked together point to a common shared LinkedSegmentReference. Uses the RefreshStatus mechanism to determine if it has been changed when receiving an updateLinkedSegments() signal (which is emitted just before the commandExecuted() signal). If a LinkedSegment finds it needs refreshing, it updates the LinkedSegmentReference, which in turn updates all the other sibling LinkedSegments.
LinkedSegmentReference - also derived from segment, not supposed to be a proper segment in the composition though, just a way of coordinating the LinkedSegments. Contains a list of the LinkedSegments linked to it. Gets updates from whichever LinkedSegment changes and passes on the updates to the others. In principle (though not implemented yet) LinkedSegment could have a time squash/stretch or pitch shift relative to the LinkedSegmentReference. The Composition contains a set of QWeakPointers to all LinkedSegmentReference as a convenience for use during serialisation.
SegmentQuickLinkCommand - analogous to SegmentQuickCopyCommand but to generate the LinkedSegments from the Segment being link-copied, or to create another link to an already existing LinkedSegment.
Changed classes of interest:
Segment - Gave this a virtual copy constructor style clone function, so where copy constructor was used the clone function can be used to do either a deep copy (just in case the seg's actually a LinkedSegment), or a shallow copy (just a Segment with a copy of the events, even if the original's a LinkedSegment).
CompositionView, SegmentTool, SegmentSelector, Command - these contain the hackery to handle the control-middle-mouse-drag to fire the quick link command. As you can see I had to jump through some hoops to cope with the fact that you end up dragging a segment which gets removed from the composition and is replaced by a LinkedSegment. I hope I've not done anything to heinous achieve this - I'm not proud of the dynamic_cast-ing at line 397 of SegmentSelector.cpp by the way.
CommandHistory - contains the emits of updateLinkedSegments() before the emits of commandExecuted(), which causes the synchronisation of the LinkedSegments before their observers are updated as a result of the emit of commandExecuted().
SegmentQuickCopyCommand - this creates a shallow copy of the segment, just to prove that in principle it's possible to "un-link" a segment (although you have to create a copy to do it at the moment).
RefreshStatus - changed default value of m_needsRefresh to false, as it was causing me grief it being true by default. I couldn't see it made any difference to anything else for it to be initialised false, so I changed it.
Changed classes of not much interest:
In many places changed use of Segment copy constructor to use the clone function. Tried to guess when it was appropriate to use the deep or shallow copy option.
Event, RosegardenDocument and RoseXmlHandler - made a small effort to get the branch to be able to read linked segments out and in. Did some hackery with xml element names when outputting a LinkedSegmentReference, so that they'd be ignored when read in by previous and trunk versions. I did this because I wanted to check stuff sometimes against the trunk and it was annoying not to be able to load files generated on the branch in the trunk. When loaded into a trunk build, segments which were linked in this branch will just appear as ordinary copies.
[r12123] by iangardner
Creating a branch to experiment with a possible way of doing linked segments.
[r12122] by dmmcintyr
I feel like committing a minor victory, and doing it directly in trunk/
This is very preliminary, and I have a long way to go, but I finally figured out
I wanted to enforce harder links on the ties at a lower level than this, but
Where this is going is to work on the same kind of enforcement tactics in many
After literally years of chewing on this problem off and on, it's pretty
[r12121] by dmmcintyr
EXPERIMENT: There are three very old bugs involving tied notes and the matrix.
So how about if we're never going to make this function nicely (which is fair to
In this first stab at it, tied notes are shown on the matrix using a different
It's miles away from an ideal solution, but maybe it's workable. If so, we