Commit graph

702 commits

Author SHA1 Message Date
Tim Mayberry
7b82277c7e Don't try and split a region when dragging, should fix bug #6338 2015-09-16 16:28:18 +10:00
Colin Fletcher
3eb7ee6ac1 Check that a route has a track before trying to insert time on it.
Routes which are busses don't have a track, and thus no playlists either:
avoid a crash when inserting time when a bus is selected and 'all
playlists' is chosen.
2015-09-10 11:50:20 +01:00
Ben Loftis
43f3c0e0f2 clean-up previous commit 2015-08-27 10:13:35 -05:00
Ben Loftis
84845833c1 Add missing actions from MB2 for Mike:
Set-Loop-Start/End-From-Edit-Point
Set-Punch-Start/End-From-Edit-Point
2015-08-19 14:53:35 -05:00
Ben Loftis
9673e6b271 merge fix again 2015-07-16 17:14:14 -05:00
Ben Loftis
46c8369328 merge fix 2015-07-16 16:13:24 -05:00
Paul Davis
a81bfbfc41 use Tracks' MainMenuDisabler during session lock (could be improved with more RAII) 2015-06-29 14:18:09 -04:00
Paul Davis
ee791f251a make the quantize dialog persistent so that settings are retained 2015-06-26 12:47:11 -04:00
Colin Fletcher
94e4e2f55f rename TempoMap::cut_time() to remove_time()
Everywhere else, 'cut time' has been renamed to 'remove time': for consistency,
rename this one remaining function to match.
2015-06-25 15:33:53 +01:00
Colin Fletcher
b56bb944f6 Rename 'Cut time' to 'Remove time'
'Cut time' implies that the cut timeline items might end up on the
clipboard to be pasted somewhere: this isn't the case at present, so rename
the functions, class, &c. to say 'remove' rather than 'cut'.

Rename insert_time_dialog.{cc|h} to insert_remove_time_dialog while we're
at it.
2015-06-17 17:15:21 +01:00
Colin Fletcher
721608aef3 Update 'Cut time' to match 'Insert time', and fix cut-time moving range markers
Add options to move glued & locked markers to Editor::cut_time(), in line
with the insert_time() implementation.

Fix up the order in which operations apply to range marker start & end
points, to avoid problems when a range which lies after the cut point is
shorter than the length of the cut.
2015-06-17 17:15:21 +01:00
Colin Fletcher
e234e98f13 Use 'Insert time' dialogue for 'Cut time' too. 2015-06-17 17:15:21 +01:00
Colin Fletcher
292f704b30 Insert time: don't unlock markers we're not going to move anyway
Move checking for locked markers in Editor::insert_time() so it doesn't
happen if we're going to skip the marker because it's glued to musical
time.
2015-06-17 17:15:21 +01:00
Colin Fletcher
34e1e00f8b Insert time: fix moving of range markers
When inserting time and moving a range marker, move its end first, before
moving its start, so that if the time being inserted is greater than the
length of the range, we don't try to set its start to after its end.
2015-06-17 17:15:21 +01:00
nick_m
d019ee836c Use a better pattern to avoid abort_reversible_command().
- also, duplicated regoins are now selected and some end-of sesion
	  bugs fixed there.
	- should fix lack of tempomap undo in Editor::insert_time ()
2015-06-17 09:54:23 +10:00
nick_m
4c1d79af4a Unbreak region brush drag wrt undo, avoid some dangling commands in the gui
- also allow moving of automation lines in internal mouse mode.
	- this is also a first pass at ensuring that if an operation does
	  nothing, avoid an undo entry.
2015-06-17 09:54:22 +10:00
Ben Loftis
4aace9be68 new actions: allow user to set session start and end to playhead location 2015-04-27 15:59:03 -05:00
ben
e2afdb21c3 minor tweaks to Cut Time dialog. Use an enum to tell preferred_edit_location what to ignore, so cut and insert dialogs will never use mouse location. 2015-04-21 10:22:28 -05:00
Colin Fletcher
84f0dceefb Port 'Cut time' code from Mixbus
Copy the 'Cut time' code from Mixbus, making a few obvious fixes to work in
A3 (e.g. nframes_t => framepos_t / framecnt_t).

Seems to work to move & remove markers, tempo & meter markers, and regions on
selected tracks.

Still TODO:
 - use existing A3 'Insert time' dialogue
 - make it respect 'No selection = all tracks'
 - rename the command to something like 'Remove time' or 'Delete time': 'Cut'
   sounds to me as if the removed range should end up on the clipboard ready
   to be pasted somewhere, which of course it doesn't.
2015-04-21 10:22:27 -05:00
Paul Davis
803853b4a4 rationalize incorrect design for removing tracks.
Still requires a way to make this work correctly from the mixer window
2015-04-06 17:56:23 -04:00
Robin Gareus
d05c09c1f6 consistent message session start->end. 2015-03-25 12:33:51 +01:00
Robin Gareus
5dc7866132 only temp. disable visual state saving. 2015-03-21 16:09:35 +01:00
Robin Gareus
f121d04d6d vertical fit: hide tracks in-between 2015-03-21 16:09:35 +01:00
Robin Gareus
6874bca886 vertical scroll stop on automation lanes 2015-03-19 20:32:59 +01:00
Ben Loftis
45f874cfab remove locate before loop, which was causing intermittent loop behavior 2015-01-30 10:26:27 -06:00
Ben Loftis
c7affd79c2 remove track-selection requirement so fit_selected_tracks works as coded. change name to fit-selection. remove action to zoom (both axes) because this can trivially be accomplished by clicking (f)it and (z)oom sequentially, and it frees a keybinding. remaining bug: Fitting a selection of MIDI regions doesnt work right 2015-01-11 11:46:36 -06:00
Ben Loftis
f7e3d1be2c change Split menu entry to say Split/Separate (it was already doing that anyway). also fix a bug so you can drag the playhead and split at the playhead location 2015-01-08 16:00:49 -06:00
Ben Loftis
a4f7c21ec3 now that regions and range selections are exclusive, the separate actions to set ranges or zoom to selections are redundant. save some menu entries and keybindings by consolidating them. also consolidate some code with new function get_selection_extents(). as a side-effect, this checkin fixes the assert failure in play_with_preroll 2015-01-07 15:31:30 -06:00
David Robillard
2a251b4570 MusicalTime => Beats. 2015-01-07 00:12:07 -05:00
nick_m
61315c314d Make editor undo/redo actions sensitive at appropriate times. 2015-01-02 08:01:12 -05:00
nick_m
a795892492 Separate selection operations into their own temporary history mechanism.
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.
2015-01-02 08:01:12 -05:00
David Robillard
4c0cebf7f9 MIDI transform dialog. 2014-12-28 16:06:44 -05:00
Robin Gareus
c5db19bc52 fix "alt+g" duplicate range selection.
This is a somewhat wacky workaround but no there is
no better solution in sight.

Related bug:
 select range, save, quit, restart & re-load session
-> range selected but tool == object
2014-12-26 13:10:01 +01:00
David Robillard
12a7f12b0b Context menu for applying edits to note selection. 2014-12-25 15:32:10 -05:00
Ben Loftis
1211278a2b consolidate zoom-to-range and zoom-to-regions into: zoom-to-selection. ToDo: zoom to selection of midi notes, control points, tracks(?) 2014-12-22 17:42:43 -06:00
Paul Davis
64fa63212f move all (G)UI related configuration parameters into UIConfiguration, not RCConfiguration 2014-12-22 13:39:46 -05:00
David Robillard
670938c8c4 Fix various cursor problems.
Add a new scoped cursor system that makes it much harder to screw up and end up
with stick cursors and so on.
2014-12-20 01:13:25 -05:00
Colin Fletcher
1823126408 Implement configurable region selection after split
Implement the configured behaviour of region selection after split.
2014-12-19 17:12:04 +00:00
David Robillard
a12a065457 Fix copy paste of MIDI and track automation. 2014-12-18 20:23:34 -05:00
David Robillard
5fef655380 Remove internal edit mode and add "content" tool. 2014-12-18 20:21:01 -05:00
nick_m
9af9e17adc Add editor selection state to session history via a SelectionMemento, which
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-18 11:03:10 -05:00
Ben Loftis
e66752cec1 add set-session-extents-from-edit-range 2014-12-09 16:18:47 -06:00
David Robillard
4f8714a038 Fix alignment of automation paste.
Preserve alignment between notes and control points when doing an internal
copy/paste of both.

Relative alignment between points on multi-paste is still not preserved.  Both
behaviours here are actually useful, perhaps a modifier...
2014-12-07 23:16:42 -05:00
David Robillard
bfbb0f6178 Add legatize and remove overlap MIDI operations.
We're going to need the ability to apply MIDI edit operations to a note/control
selection soon...
2014-12-06 23:42:11 -05:00
David Robillard
2ea4ae603a Fix crash on shift+rclick of region to remove.
This doesn't seem to have been touched for years, and I don't see how such an
obvious bug could possibly have been around for so long, but, well, this fixes
it as far as I can tell.
2014-12-06 22:43:06 -05:00
David Robillard
4650912ae3 Adapt range when copying between automation types.
For things like copying from pitch bender to a CC.

Also things like fader to pan, but that seems a bit funny.  The conversion
probably needs to be a bit smarter here, perhaps taking the normal into
consideration...
2014-12-06 13:40:35 -05:00
David Robillard
63082821d8 Support paste between automation lanes.
Also push the increasingly unwieldly paste parameters into a context object.

As with othe things, currently it is only possible to do "cross-type paste" by
explicitly selecting the target track.  We will need to get automation region
view selection working to do better here, but at least for now it's possible to
get the data over.
2014-12-06 12:20:52 -05:00
David Robillard
767c0238a3 Replace half-baked param metadata with descriptor.
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-12-01 23:35:24 -05:00
Colin Fletcher
002c3b1646 Add comment about parameters to coverage() including the end point. 2014-12-01 20:06:08 +00:00
David Robillard
ea5876b836 Remove dead code. 2014-11-25 02:11:44 -05:00