summaryrefslogtreecommitdiff
path: root/gtk2_ardour/selection.cc
AgeCommit message (Collapse)Author
2016-11-15Fix crash when selecting MIDI noteTim Mayberry
Replace now always invalid assertion with initialization Related to #7110
2016-11-15change note selection node name - should fix 7110nick_m
2016-11-14potential fix for #7110 (older sessions have no id)Robin Gareus
2016-10-15Note selection state uses note event_id_t.nick_m
2016-07-14enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.hPaul Davis
2016-07-06many changes associated with rationalizing selection flowPaul Davis
2016-06-05tweak API of SelectablePaul Davis
2016-05-04OMNIBUS COMMIT: prefer const XMLNode::property method (and provide a real one)Paul Davis
2016-03-28fix gain automation copy/paste -- #6842Robin Gareus
2016-01-29use new selection API to avoid double signal when a track or tracks are SET ↵Paul Davis
as the selection
2016-01-29modify Selection API to provide (default-valued) "with_signal" argument to ↵Paul Davis
all ::clear_*() methods This allows the clear methods to be used before calling ::add(), to avoid the emission of a signal saying "there are no <foo> selected right now". There should be no side-effects from this commit. Note that correct use of this new API is complex, and requires avoiding the use of wrapper methods like clear_objects().
2016-01-14Change handling of Midi note selection to eliminate signal emission/delays.Tim Mayberry
Each MidiRegionView(MRV) is connected to the Selection::ClearMidiNoteSelection signal that is used to notify the all MRV instances to clear their note selection. The MRV class also has a private static SelectionCleared signal that is used to signal other MRV instances when their selection has been cleared. When the Selection::ClearMidiNoteSelection signal is emitted it causes each MRV to also emit the SelectionCleared signal. So the emission takes quadratic time. With 1500 MRV instances emission takes about 2.2 seconds on my machine, and some operations like track selection cause it to be emitted 3 times(another issue). The Selection class in the Editor knows which MRV instances have note selections, as it is notified by MidiRegionView whenever the selection count becomes zero or becomes non-zero. Clearing the Note selection should then just be O(N) and direct calls can be used rather than signals. This change removes both the signals and uses the existing references between Selection and MRV class to control note selection. There should be no behavioural changes in Midi note selection with this change.
2015-10-20Add error check to region gain control point selection undo.nick_m
2015-10-20Add region gain point selection undo.nick_m
2015-10-20Make control point selection more consistent.nick_m
- disallow simultaneous events via ControlList::editor_add () - clicking on an automation line selects the points that define it. - don't 'flash' a region selection when using mousedraw mode. - cp click selection resembles region selection. - region gain points respect snap modifier (a la automation points).
2015-07-23rename Marker classRobin Gareus
Classes are in the global namespace. OSX has a flat namespace and OSX32bit/Carbon has a Marker too.
2015-03-17initialize uninitialized variableRobin Gareus
just another hint for clang/static analysis.
2015-02-19fix some static-analysis warningsRobin Gareus
2015-01-17Fix note resize double undo bug.nick_m
Newly drawn notes are selected. Clear midi note selection on Selection::set_state().
2015-01-11clean up whitespace & debug output in 44203ceRobin Gareus
2015-01-11Fix AutomationTrackItem rubberband click thinking it was unhandled.nick_m
Fix several other cases where a single mouse click could cause several (not nested) selection ops. Fix missing selection memento for midi notes and midi commands. Rename some variables. Fix random style issues.
2015-01-02Add automation track control points to undo history (and selection_op history).nick_m
2015-01-02Removed unrelated change in Selection::set_state () (clear_points()).nick_m
2015-01-02Separate selection operations into their own temporary history mechanism.nick_m
The user can now replay *all* earlier selection operations until the next session undo/redo command, or the completion of a new operation. Nothing relating to selection ops is stored, and selection operation history is begun on first idle. Selection operation history is fundamentally different from the history of operations which act on a selection in terms of both their viewport and the amount of information required to replay them. WRT undo, the user of a selection op doesn't care about the viewport state at the beginning of an op, but rather that at the end of the previous one.
2014-12-3132/64bit compatRobin Gareus
2014-12-18Fix copy paste of MIDI and track automation.David Robillard
2014-12-18Enforce internal/external selection exclusivity.Ben Loftis
2014-12-18Add editor selection state to session history via a SelectionMemento, whichnick_m
combines selection related editor properties with the current editor selection. The related editor properties are: mouse mode, zoom setting, left frame of the canvas, y origin of the canvas. Selection state now includes region views (storing the underlying region id) and time. This patch also fixes a region mute undo bug.
2014-12-01Replace half-baked param metadata with descriptor.David Robillard
Among other things, this means that automation controls/lists have the actual min/max/normal/toggled of parameters, and not those inferred from the Parameter ID, which is not correct for things like plugin parameters. Pushing things down to the Evoral::ParmeterDescriptor may be useful in the future to have lists do smarter things based on parameter range, but currently I have just pushed down the above-mentioned currently used attributes.
2014-11-16Support cut/copy/paste of several regions and lines at once.David Robillard
The idea here is to do the reasonable thing, and copy objects of some type (e.g. MIDI region, gain line) to tracks with a matching type. The user can override this with a track selection, which will be used straight-up. Lost: ability to copy/paste lines across types, e.g. gain to pan. This is often questionable, but sometimes useful, so we will need to implement some sort of "greedy mode" to make it possible. Implementation simple, but not sure what to do. Perhaps this should only be possible if one automation track is explicitly (i.e. via track selection) involved, and the types are at least compatible-ish?
2014-11-14add abort() to non-reached codeRobin Gareus
This cleans up a lot of false-positives in static analysis and also helps compilers to optimize code paths in general. (tagging the fatal stingstream operator as ‘noreturn’ is far less trivial)
2014-09-03selecting a track in the mixer, with synced selection, will now clear any ↵Ben Loftis
objects selected
2014-07-07fix copy paste error in selectionBen Loftis
2014-07-07remove leftover cruft from link-region-and-track removalBen Loftis
2014-07-06remove some cruft with previous commits. remove option ↵Ben Loftis
link-region-and-track-selection since they are now exclusive, and rename select-all-regions to select-all-objects to match the implementation
2014-07-05new approach to selections which will help rationalize Split and similar ↵Ben Loftis
functions. Object and Track selections are now mutually exclusive. a split will happen at (a) selection->regions (b) the intersection of edit_point and selection->tracks or (c) the region under the mouse, IFF nothing else is selected.
2014-02-26severe rationalization (still incomplete) of behaviour of cut + copy.Paul Davis
Quite a bit more to do here to make this as intuitive as it ought to be.
2014-02-25ensure that track selection operations call ::set_selected() for tracks, ↵Paul Davis
allowing faster lookups of selected status during drags
2013-01-02various fixes for moving markers, fixes a crash reported by tim blechmann ↵Paul Davis
and also likely #5232 and #5241 git-svn-id: svn://localhost/ardour2/branches/3.0@13754 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-19do NOT deselect markers when clearing object selection - markers are outside ↵Paul Davis
of the main canvas, do not belong to timeaxisviews and thus are not objects in the sense that this method is intended for git-svn-id: svn://localhost/ardour2/branches/3.0@13686 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-13fix more range selection issuesPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13662 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-13make sure we never use ID of zero for range selections, fixing a very minor ↵Paul Davis
glitch in deleting a specific range selection from several git-svn-id: svn://localhost/ardour2/branches/3.0@13661 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-13various fixes for "advanced" operations on range selections. ctrl-drags now ↵Paul Davis
add a new range selection, allowing discontiguous selections as in ardour2, shift-click extends an existing range selection to the clicked position, alt-drag on a range selection moves it, and to do a so-called "separation drag" now use ctrl-alt-drag (or ctrl-alt-click) git-svn-id: svn://localhost/ardour2/branches/3.0@13660 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-26explicitly enforce selection rules to avoid some corner cases and avoid user ↵Ben Loftis
confusion git-svn-id: svn://localhost/ardour2/branches/3.0@13549 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-18fix O(N^M) behaviour of control point selection (N = number of control ↵Paul Davis
points, M = number of automatable parameters) git-svn-id: svn://localhost/ardour2/branches/3.0@13525 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-05-31Slightly unpleasant hack to stop control points beingCarl Hetherington
unselected when you ctrl-drag a selected point in order to do a push drag. git-svn-id: svn://localhost/ardour2/branches/3.0@12502 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-05-17Deselect other control points on normal selection.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@12323 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-25remove the apparently unnecessary "ui_bind()" macro from entire source basePaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@12088 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-22Use a list of ControlPoints to hold the automation selection,Carl Hetherington
rather than a time range. This makes more sense now that we display every point on an automation line, rather than just a subset. Makes the code a fair bit simpler, and should fix some unexpected behaviours, especially when cutting automation points. git-svn-id: svn://localhost/ardour2/branches/3.0@12054 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-05clear marker selection as part of Selection::clear(); fixes "error" that ↵Paul Davis
prevents click from creating a new midi region because there appears to be a marker selection git-svn-id: svn://localhost/ardour2/branches/3.0@11449 d708f5d6-7413-0410-9779-e7cbd77b26cf