Commit graph

709 commits

Author SHA1 Message Date
Robin Gareus
33de08e9e7
Do not commit empty split undo transactions
When no region(s) are selected and none are under the edit-point,
only a selection change was committed as undo action.
2021-03-10 14:20:24 +01:00
Robin Gareus
bdc1cdc15f
Fix crash when separating ranges with automation
playlist->partition() calls DiskReader::playlist_ranges_moved()
which may add Panner and Fader automation state changes.

The reversible command has to be started before calling
playlist->partition(). Simply collecting playlist->rdiff() after
the fact is not sufficient.
2021-03-10 13:55:32 +01:00
Robin Gareus
4769c387f3
Expose EditorCursor via public editor API
This is in preparation to subscribe to playhead cursor position
changes in the recorder-UI.

This change also clean up the API, replacing a public variable
with a const access method and follows #12 of
https://ardour.org/styleguide.html
2021-01-08 18:39:56 +01:00
Ben Loftis
d0abe7e742 Consolidate action adds a whole-file region (for the Source list) AND a region on the timeline (just as if you recorded it) 2020-07-26 09:53:47 -05:00
Ben Loftis
80a7d32e07 Prompt user for name of Range and Region bounces (gtk part) 2020-07-26 09:53:47 -05:00
Paul Davis
eaf88040cc NO-OP: add missing braces 2020-07-05 17:48:16 -06:00
Paul Davis
ad6de3c233 when carrying out MIDI editing operations, be sure to act only once per Model when the selection involves non-forked copies
Still can fail if the non-forked copies have been modified enough, but user should not multi-select them in that instance
2020-07-02 23:15:10 -06:00
Paul Davis
c82ca66fcc fix for #8112. No need to request transport roll before requesting loop play
And doing so confuses ardour
2020-05-16 09:31:43 -06:00
Johannes Mueller
1280360a65 Revert "Fix 8061 (partly): Don't scroll down if no further tracks to scroll to"
This reverts commit 81cbf36c56.

Limiting scrolling has other drawbacks. A proper fix for the redraw issue
has to be found.
2020-04-27 22:58:32 +02:00
Johannes Mueller
81cbf36c56 Fix 8061 (partly): Don't scroll down if no further tracks to scroll to
The issue remains if a track is selected by a "fit-selection" action second
last track covers the whole trackview. Then when scrolling one track up, the
huge track disappears and a smaller track follows, that covers a lot less
space.

-> Proper redraw of the track view is still needed.
2020-04-27 21:51:57 +02:00
Robin Gareus
485ac45477
Fix region boundary cache lookup segfault
When the cursor position is after the last item in the vector,
upper_bound returns the last given iterator, here:
`region_boundary_cache.end()`, which is invalid to dereference.

Furthermore prevent possible  duplicate prev/next pair at zero,
when using the video-timelime.
2020-04-22 22:37:43 +02:00
Robin Gareus
929754f48c
Prefer PBD::Unwinder to temporarily change a variable 2020-04-17 22:49:45 +02:00
Paul Davis
e4e035c6e2 remove debug output 2020-04-16 17:48:12 -06:00
Paul Davis
65f7a6a938 changes to deal with region/note selection when changing into/out of internal edit mode
Also, activate MIDI editing actions so that they are effective in internal edit mode
2020-04-16 17:48:12 -06:00
Paul Davis
0ecf1e40ea add Editor-level action to toggle track layer display 2020-04-03 18:54:51 -06:00
Paul Davis
9ca9aa8ae1 add new Editor method to toggle all existing automation
Applies to selected tracks if non-empty; all tracks otherwise
2020-04-03 13:28:58 -06:00
Paul Davis
98884e9736 rename variable (frames -> samples) 2020-04-01 10:10:50 -06:00
Paul Davis
b7e30cfc24 remove debug output 2020-03-30 17:37:10 -06:00
Paul Davis
ff08fbb969 when build the region boundary cache, use the "end" of a region, not its "last sample"
It makes no sense to every align a region start/sync point during a drag or alignment operation
with the last sample of another region. It only makes sense to align with the position immediately
after the last sample of the other region (e.g. directly sequencing regions).
2020-03-30 17:25:07 -06:00
Paul Davis
a4d7b45fe0 remove destructive/tape mode tracks 2020-03-17 16:31:49 -06:00
Robin Gareus
d9836ec002
Update GUI: freeze operation error/warnings 2020-03-14 13:25:54 +01:00
Robin Gareus
8710a2d943
Dialog default to cancel (#7915)
There are various ways to cancel a dialog. Only checking for
RESPONSE_CANCEL is not sufficient. e.g. Esc causes a delete-event.

 * Gtk::RESPONSE_CLOSE
 * Gtk::RESPONSE_REJECT
 * Gtk::RESPONSE_DELETE_EVENT
 * Gtk::RESPONSE_CANCEL
 * Gtk::RESPONSE_NO

Among others this fixes "Clicking session > open,
then hitting ESC opens the currently selected folder and session"
2020-02-27 23:27:42 +01:00
Ben Loftis
cf4d7387d2
Use a sensible min length for default session-duration
If the user tries to set the Start or End marker on an empty session,
apply some sensible defaults for the resulting session range.
2020-01-26 19:36:23 +01:00
Paul Davis
215d5d556f handle possible failure of a region rename 2020-01-23 14:25:38 -07:00
Ben Loftis
c8faadee4b Fit Selection (Vertical): if we cant fit all selected tracks, report that to the user. But still fit what we can. 2020-01-23 14:11:18 -06:00
Paul Davis
47767738b9 rename DoTheRightThing to RollIfAppropriate 2020-01-18 08:49:18 -07:00
Paul Davis
3c00048b0c Session::request_locate() takes a tri-valued second argument for "roll-after-locate"
This allows callers to defer logic about auto-play/current rolling state and more to TransportFSM where it
can be cnentralized and is less ambiguous
2020-01-18 08:49:18 -07:00
Robin Gareus
2b55d6dce3
First batch of MessageDialog replacements 2019-12-14 23:44:01 +01:00
Robin Gareus
ccefc64418
Reset paste-count, paste-offset on undo/redo
This fixes an workflow edge-case when undoing a paste in order
to paste at a different location on the same track or automation lane.
After undo, any accumulated paste-offset needs to be reset
2019-11-26 23:49:06 +01:00
Robin Gareus
fb4cbb9f9e
Correctly handle Zoom > Edit-point > Mouse
Previously this failed if the event was initiated outside
of the canvas (e.g. Zoom buttons).

This also fixes a special case of Zooming to an edit-point at zero.
2019-09-17 17:18:29 +02:00
Robin Gareus
e7637d7786
Fix mute toggle actions when mute is automated
Track menu, as well as mixer-shortcut to set/unset mute
of selected tracks needs to send a start_touch() event, otherwise
the change is not effective.
2019-09-03 22:01:35 +02:00
Nikolaus Gullotta
f44a436f70
Move StripSilenceDialog XML to dedicated function
This moves the Session::add_extra_xml() call out of editor_ops.cc and
moves it to its own class method StripSilenceDialog::finished()
2019-08-30 14:44:50 -05:00
Nikolaus Gullotta
d5988b232c Add settings retention to StripSilenceDialog
StripSilenceDialog will now retain its threshold, minimum length, and
fade length values from run to run.

This is done via Session::add_extra_xml() and recalled during the
construction of StripSilenceDialog via Session::extra_xml()
2019-08-30 12:40:28 -05:00
Robin Gareus
4050ca5633
Update GPL boilerplate and (C)
Copyright-holder and year information is extracted from git log.

git history begins in 2005. So (C) from 1998..2005 is lost. Also some
(C) assignment of commits where the committer didn't use --author.
2019-08-03 15:53:15 +02:00
Ben Loftis
da3d8e5418 (Source List) Implement insert-region action... now uses the Source List. 2019-08-01 12:11:31 -05:00
Ben Loftis
50786b3e5c (Source List) Recover Regions feature: WIP 2019-08-01 12:11:31 -05:00
Ben Loftis
c12a017728 (Source List) Region Tags (gtk2 part) 2019-08-01 12:11:31 -05:00
Robin Gareus
b1587940e4
Fix crash when deleting selected region-view in ripple mode #7764
Changing the playlist (remove_region) invalidates selection and
unsets `clicked_regionview`. The region to operate on needs
to be stored for later use.
2019-05-27 14:10:59 +02:00
Robin Gareus
31815b5f26
NO-OP: whitespace
This fixes mostly <tab> after <space> and similar <tab> not used
for indenting as well as some related code alignment issues.
2019-04-13 17:57:46 +02:00
Robin Gareus
c09c7bab52
Update GUI, use Session::playlists() getter (2/2) 2019-03-19 05:14:40 +01:00
Ben Loftis
66f73f40db Fix thinko: if the entered_regionview is already part of the selection, do not treat it as a special case when splitting. 2019-03-07 09:50:00 -06:00
Ben Loftis
3e442ae52b Session-range behavior (gtk2 part)
* Both the session-start and session-end point should follow the is-free option
  * Rename the end-is-free option to session-range-is-free, to reflect that change
  * This fixes the problem: recording before the start marker would move the Start,
    even if the user had already fixed the End marker.
2019-02-12 11:35:57 -06:00
Ben Loftis
22deebb42f Selection-after-split behavior (gtk2 part)
*  When splitting in MouseObject, entered_region should get priority over selected regions.
    This fixes the unexpected case where you try to split an unselected a region, but
       a)  nothing happens  OR
       b)  some other region (maybe off-screen) is split

*  Range mode now has its own option for splits, which can be:
     Clear:  the selection is cleared.
     Preserve:  the selection is left as-is. (default)
     Force:  all the regions that resulted from the split are selected (forcing a tool change).

*  Un-hid the additional config options to select only the regions BEFORE or AFTER a split.

*  Note:  splits made with Cut Tool should be unaffected by these changes.
2019-02-12 11:35:39 -06:00
Alex Pilon
e7091cb2cd
Observe preference to prompt for names when adding range markers 2018-12-28 17:25:30 +01:00
Robin Gareus
245d48dbd0
NO-OP: Clarify function name 2018-11-28 15:16:25 +01:00
Robin Gareus
f150f6c074
Use central method to check for engine where required
These are generally places where tracks/busses are created or port
connections change.
2018-11-28 00:01:50 +01:00
Robin Gareus
57d7b5de65
GUI limitation: Require engine to add/remove tracks/busses 2018-11-27 13:18:39 +01:00
Paul Davis
58e9bb0a14 move away from "sync source" concepts 2018-10-05 14:15:02 -04:00
Ben Loftis
35243c9b3e Fix weird behavior in playhead_x_to_grid: use return value from snap_to_grid. 2018-10-02 20:12:21 -05:00
Ben Loftis
2b95b5b8b3 More correct fix for 8bfbef4: the check was already there; just needed to set the dirty flag. 2018-10-02 09:41:04 -05:00