13
0
Commit Graph

452 Commits

Author SHA1 Message Date
57c1b6e261 Fix quantization and other time-related ops. 2014-11-22 21:49:42 -05:00
c1cfa12d6e Wrap MusicalTime in a class.
This lets us get a more explicit handle on time conversions, and is the main
step towards using actual beat:tick time and getting away from floating point
precision problems.
2014-11-22 04:05:42 -05:00
aabde88de0 Fix incredibly unlikely NULL pointer dereference. 2014-11-18 02:53:27 -05:00
2c85e7acac Fix zoom out limiting logic to actually limit minimum zoom. 2014-11-18 02:53:27 -05:00
563f5c11a6 Support cut/copy/paste of MIDI notes and controllers at the same time. 2014-11-16 22:35:45 -05:00
2fa6caad95 Support cut/copy/paste of several regions and lines at once.
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-16 22:35:45 -05:00
5393982c80 Don't add spurious points when copy/pasting automation. 2014-11-16 22:35:45 -05:00
9321aedb24 Reset repeated paste state on cut/copy. 2014-11-16 22:35:45 -05:00
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
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
31b6b05125 Fix MIDI note cut/copy/paste. 2014-11-14 20:04:19 -05:00
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
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
cca7ddf046 fix vertical canvas scrolling
* properly account for hidden tracks
 * allow to scroll to last track
2014-10-29 12:06:20 +01:00
b2a183d4b7 a few tweaks to zoom computations so that zoom-to-range works correctly 2014-10-21 14:48:45 -04:00
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
44f71ce599 Text tweaks and typo fixes 2014-10-02 18:03:19 +01:00
f415e24514 do not stupidly try to save punch/loop/session ranges during clear_ranges op 2014-09-17 09:38:17 -04:00
8b98125ad3 fix various loop-initiation faults 2014-09-15 12:44:45 -05:00
017dcfea45 Make zoom-to-session include regions currently being recorded 2014-09-13 15:27:30 +01:00
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
6dd114c3f1 fix Play Loop from range context menu 2014-09-03 09:40:22 -05:00
4718def3c4 update track-header width when removing track(s). 2014-08-31 22:54:43 +02:00
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
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
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
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
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
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
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
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
07e0f785f8 add "fade range" operation, bound to alt-f at present by default 2014-07-10 08:17:22 -04:00
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
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
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
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
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
ba8898bd5f add new regions created by split to selection after operation is complete 2014-07-03 19:43:35 -04:00
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
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
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
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
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
c52cb37bf2 suspend route redisplay for (rec-en, solo, mute and monitor) batch changes 2014-06-29 02:52:56 +02:00
4a7eb62bf8 use state Session::StateProtector 2014-06-28 22:02:20 +02:00
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
a3c378cf62 move utility functions into a dedicated namespace 2014-06-25 21:47:54 +02:00
4b515c178c remove unused code 2014-06-25 13:37:59 -04:00
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
036740b0c8 check UIConfig variable before restarting lock timeout 2014-06-25 11:34:58 -04:00