David Robillard
fd9ccc7058
Use an enum for RoundMode instead of magic numbers.
...
No functional changes in this one (for easier auditing), but towards having
round up/down only if necessary modes, rather than kludging around that
situation with a double round as we do currently.
2014-11-16 22:35:45 -05:00
David Robillard
31acd96384
Implement "multi-paste" for notes, regions, and automation.
...
The idea here is that pasting several times to the same location doesn't make
sense. Instead, the paste is appended past the last paste, snapped to the
grid. This make it simple to replicate a given section a number of times,
simply by copying once and pasting several times.
This behaviour only appears when successive pastes are done to the same
location (whatever the edit point is). When the paste point changes, the
"multi-paste" state is reset.
Boots 'n cats 'n boots 'n cats.
2014-11-14 20:04:19 -05:00
David Robillard
31b6b05125
Fix MIDI note cut/copy/paste.
2014-11-14 20:04:19 -05:00
Robin Gareus
6b3a8915f3
add abort() to non-reached code
...
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-11-14 11:30:08 +01:00
David Robillard
589cc3162b
Fix crash when deleting overlapped regions.
...
Use RegionSelection for MIDI regions as well, since the old dumb stub didn't do
some things correctly. There's probably no reason to have a separate class for
this at all, and some good ones for putting all regions in the same selection,
so we should probably do that. For now they are still separate in the
selection but use the same base class.
2014-11-13 21:32:08 -05:00
Robin Gareus
cca7ddf046
fix vertical canvas scrolling
...
* properly account for hidden tracks
* allow to scroll to last track
2014-10-29 12:06:20 +01:00
Paul Davis
b2a183d4b7
a few tweaks to zoom computations so that zoom-to-range works correctly
2014-10-21 14:48:45 -04:00
Colin Fletcher
c2fc7f04a7
Don't select newly created regions after splitting selected regions (except on Mixbus)
...
I can't see a reason to select the newly-created regions after
splitting selected regions: I can't think of any case where you'd want
the next operation to apply to both the regions, and it makes it very
easy (in my experience) to trim/move/&c. both regions afterwards by
mistake.
However, this behaviour is desired for Mixbus, so make the selection of
regions after a split of selected regions dependent on
Profile->get_mixbus() for now.
2014-10-02 21:00:33 +01:00
Colin Fletcher
44f71ce599
Text tweaks and typo fixes
2014-10-02 18:03:19 +01:00
Paul Davis
f415e24514
do not stupidly try to save punch/loop/session ranges during clear_ranges op
2014-09-17 09:38:17 -04:00
Ben Loftis
8b98125ad3
fix various loop-initiation faults
2014-09-15 12:44:45 -05:00
Colin Fletcher
017dcfea45
Make zoom-to-session include regions currently being recorded
2014-09-13 15:27:30 +01:00
Robin Gareus
4a00bdf04a
fundamentally change ArdourButton PangoLayout handling
...
This fixes issues where button text was set during static
initialization where the widget style was not yet available,
and a lot of related issues where the text was set
before style.
2014-09-06 00:41:56 +02:00
Ben Loftis
6dd114c3f1
fix Play Loop from range context menu
2014-09-03 09:40:22 -05:00
Robin Gareus
4718def3c4
update track-header width when removing track(s).
2014-08-31 22:54:43 +02:00
Ben Loftis
96171ebe83
several fixes to make processor selection and deletion feel right, for both mixer and editor-mixer strips
2014-07-24 22:49:47 -05:00
Ben Loftis
6bdc976462
Remove "implicit" selection for plugin deletion.
...
Allow deletions in the mixer strip to fall through to editor if nothing was selected.
2014-07-24 22:49:47 -05:00
Ben Loftis
61c66afd4c
Revert previous select-strips-under-mouse behavior
...
However, keep the path for deletions in the editor-mixer via _entered_mixer_strip
TODO: if nothing was deleted, assume the user was trying to delete something in the editor instead
Show selected plugins by a red border
TODO: more work on the selection model for plugins and mixer strips
2014-07-24 11:28:31 -05:00
Ben Loftis
05f3adaba3
Allow deletion of processors in editor_mixer_strip by pointing and pressing Delete
...
This had to be hacked because the editor_mixer strip is on the editor and doesnt respond to mixer keybindings.
Also force the gain intry to lose focus if the user leaves the mixer strip. this will probably solve some long-standing complaints. although perhaps a more elegant solution is possible.
2014-07-23 16:58:43 -05:00
Ben Loftis
b22e136887
Add some new zoom-to-selection actions, so zoom tool is less needed.
...
Reverse order of items in the zoom menus to match Ardour.
Consolidate the extra zoom math into a function; this fixes a problem in zoom-to-session.
2014-07-23 11:31:06 -05:00
Paul Davis
b69870dfe6
add Editor::trackviews_height() convenience function to determine height of trackview area of canvas; use to help fix set_visible_track_count(); don't consider hidden tracks in that function; add "Selected" to that selector menu
2014-07-15 18:09:04 -04:00
Paul Davis
d0bc4b55fa
scroll up/down by tracks uses top edge as "focal point"; fix some other nasty code details
2014-07-14 12:36:51 -04:00
Paul Davis
8bc0ac7529
restore correct functioning of fit-tracks, which was mistakenly removed because of a failure to understand its complexities
2014-07-11 06:19:32 -04:00
Paul Davis
07e0f785f8
add "fade range" operation, bound to alt-f at present by default
2014-07-10 08:17:22 -04:00
Ben Loftis
c1166c9f63
fix thinko with split selections. also ignore follow_edits when we are splitting, because the playlist freeze and the newly added regions cause the playhead to jump to unexpected locations
2014-07-08 15:00:19 -05:00
Paul Davis
fcabd5d8ee
initial implementation of "bring all media into session folder". Incomplete but basically functional for audio files
2014-07-08 00:53:13 -04:00
Ben Loftis
db60bc86b8
now that track and region selections are mutually exclusive, you need a separate action to select-all-tracks and select-all-regions. also, preserve region selection during a split, iff we are working on a region selection: only add the newly created regions, dont change anything else in the selection; leave that in control of the user
2014-07-06 12:57:36 -05:00
Ben Loftis
0b38d65dd0
new approach to selections which will help rationalize Split and similar 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-07-05 20:47:43 -05:00
Ben Loftis
62c3638a42
further rationalization of the editor. after a split, ardour was switching the tool to object mode. this is the only place were ardour switched the tool for the user. that has been removed. Delete operation should not depend on the mouse mode, but rather the existence of selections. this solves the problem where you have selected regions in smart mode, but cant delete them because the mouse is in the top half (fange mode) of a track
2014-07-05 18:27:38 -05:00
Paul Davis
ba8898bd5f
add new regions created by split to selection after operation is complete
2014-07-03 19:43:35 -04:00
Ben Loftis
555a5d6348
lots of keybinding changes. added a new action to allow removing markers at the playhead location. numpad now allows you to access marks higher than 9. to locate to a marker, use the numpad decimal to start and end the operation - for example press .19. to locate to marker 19. also added alternate bindings for redo, delete, and several other alternates that will be needed in subsequent commits. tab is not working, using either Tab or nabla in the binding.in file
2014-07-03 17:50:14 -05:00
Ben Loftis
043b76569d
fix the naming and behavior of always-play-range to match the button, which is follow-edits. when you select a range, the playhead should jump to the start of the range and begin to play the selection. BUT (unlike previous implementation) if the user wants to relocate the playhead, then that should be allowed. The user should always remain in charge of the playhead location. NOTE: your previous config setting will be invalidated. You must re-save a session to overwrite with the new config variable
2014-07-03 12:56:33 -05:00
Paul Davis
3dbf37eab7
simplify zooming, remove Editor::clamp_samples_per_pixel(), fix getting "stuck" at max and min zoom levels
2014-07-02 15:53:24 -04:00
Colin Fletcher
e5e12acc56
Merge branch 'ripple-mode-cc' into cairocanvas
...
Fix up merge conflicts in
gtk2_ardour/editor_mouse.cc
gtk2_ardour/editor_ops.cc
Also fix up compile errors.
2014-07-01 19:10:47 +01:00
Colin Fletcher
83ae6beca5
Remove unused code
...
This code was changed to implement ripple mode, but meanwhile it was
removed altogether in cairocanvas. Remove it here too to simplify merging.
2014-07-01 18:38:13 +01:00
Robin Gareus
c52cb37bf2
suspend route redisplay for (rec-en, solo, mute and monitor) batch changes
2014-06-29 02:52:56 +02:00
Robin Gareus
4a7eb62bf8
use state Session::StateProtector
2014-06-28 22:02:20 +02:00
Paul Davis
c706b1c4bb
replace old implementation of Editor::_ensure_time_axis_view_is_visible() with the guts of Editor::ensure_track_is_visible(), then remove the latter.
...
Also change all users of ensure_track_is_visible() to use _ensure_time_axis_view_is_visible()
2014-06-27 10:49:05 -04:00
Robin Gareus
a3c378cf62
move utility functions into a dedicated namespace
2014-06-25 21:47:54 +02:00
Paul Davis
4b515c178c
remove unused code
2014-06-25 13:37:59 -04:00
Paul Davis
6998cb1f13
part two of: lock dialog MUST be a Gtk::Dialog so that it does not forward key (or other) events to the Editor
2014-06-25 12:10:56 -04:00
Paul Davis
036740b0c8
check UIConfig variable before restarting lock timeout
2014-06-25 11:34:58 -04:00
Paul Davis
d5ef8f5f1e
new timer-based GUI locking code
2014-06-25 08:28:36 -04:00
Paul Davis
1945260cd6
there's no me in proaudio
2014-06-24 12:48:24 -04:00
Paul Davis
6a4a294167
a bit more styling for that lock dialog
2014-06-24 11:26:21 -04:00
Paul Davis
a12f43fa46
add a modal lock dialog for better testing (and someone might find it useful, too)
2014-06-24 10:14:07 -04:00
Paul Davis
f147846863
add ability to save current action sensitivities and restore them, and to disable all action sensitivity.
...
This is needed to be able to lock the application fully on OS X, where the global menu bar would still allow interaction
even when a modal dialog is displayed.
2014-06-24 09:56:16 -04:00
Paul Davis
c30bda5173
a set of inter-related subtle changes to get vertical autoscrolling to work, or at least work better.
2014-06-17 08:08:14 -04:00
Paul Davis
9461fcb271
remove header file includes of now-removed gtk custom ruler
2014-06-12 00:18:58 -04:00
Paul Davis
18190eaa5e
clamp zoom level to show 3 days on a 4000 pixel wide screen; comment unused variable for now
2014-06-11 23:54:28 -04:00