Commit graph

135 commits

Author SHA1 Message Date
Paul Davis
a1bfe82d49 EditingContext: don't call drop_action_group() if an action group was not created
Example would be an audio clip editor that does not define MIDI actions
2025-08-27 16:47:13 +02:00
Robin Gareus
664a2b4a8e Amend c6a49fdd50 drop automation actions
This fixes a crash when showing the same Pianoroll again,
since actions a already present, a NULL reference was pushed
to session_sensitive_actions. Closing a session then crashed
accessing a NULL Action.
2025-08-27 16:47:13 +02:00
Robin Gareus
c11b4f7bdb Use main editor for loop-range undo/redo - fix crash
While CueEditor is-a HistoryOwner, session specific
changes such as Location don't belong in EditingContext.

This fixes a heap-use-after-free crash since MementoCommand
was free()ed twice. Once via ARDOUR::Location::~Location
and earlier due to direct Destructible::drop_references
from the History.

This partially reverts 04a8fb1eb6
2025-08-27 16:47:13 +02:00
Robin Gareus
5bf5ab6f69 Add "note" to short grid labels
see also d2512c814a
2025-08-27 16:47:13 +02:00
Robin Gareus
2079401b6f Use short labels for grid and beat-div dropdown 2025-08-27 16:47:11 +02:00
Robin Gareus
16097dab8c Don't expand GUI as much on first load
The editor-toolbar still needs a major cleanup, it's
very busy
2025-08-27 16:47:11 +02:00
Paul Davis
192c7a2f9a fix for a subtle bug that led to track headers not expanding as intended
now that we use action-as-state, there was no way to look up the old
mouse mode when changing into or out of internal editing. this
prevented us from queuing the redisplay of trackviews that allows the track
headers to expand when appropriate.
2025-08-14 18:48:04 -06:00
Paul Davis
e467ee77f8 just rename a variable for more clarity when reading code 2025-08-14 14:55:37 -06:00
Paul Davis
5c2afa74e1 restore missing 1/8th note option from grid type selector 2025-08-13 11:05:05 -06:00
Paul Davis
fa97071872 mamy improvements to kbd-driven automation editing
Really needs a short video to demo/explain
2025-08-12 21:44:50 -06:00
Paul Davis
478dd72fb0 moved scoped tempo map from GUI to libtemporal (gui) 2025-08-11 15:41:34 -06:00
Paul Davis
1136ba4c99 let's (maybe) inline some of the scoped tempo stuff 2025-08-10 21:03:32 -06:00
Paul Davis
2312187070 sort-of-a-solution for local TempoMap context in EditingContext 2025-08-10 20:25:59 -06:00
Paul Davis
1ecb28da47 tweak local tempo scope infrastructure 2025-08-08 15:03:11 -06:00
Paul Davis
22abddcd95 no local tempo scope for constructors 2025-08-08 14:39:40 -06:00
Paul Davis
4e23772b5d ensure (possible) local tempo map at start of every EditingContext method
This still needs to be done for derived, non-Editor classes
2025-08-08 14:34:03 -06:00
Paul Davis
e682e1fde4 refinements to infrastructure for an EditingContext's locally scoped tempo map 2025-08-08 14:34:03 -06:00
Paul Davis
28e0082868 use std::unique_ptr for a couple of EditingContext members 2025-08-08 12:12:09 -06:00
Paul Davis
4f5848d85c action-ify stationary playhead mgmt; fix up follow-playhead action handling 2025-08-08 11:35:20 -06:00
Paul Davis
19f6b5277c when setting default actions, do dbl-set to force change 2025-08-06 11:44:20 -06:00
Paul Davis
d654d98661 fix a #warning about zoom focus state 2025-07-30 22:18:26 -06:00
Paul Davis
9c890f2690 zoom focus and snap mode get the stateful-action treatment 2025-07-30 15:28:46 -06:00
Paul Davis
1d4e3940d1 large-scale refactoring of Pianoroll, CueEditor and AudioClipEditor
Enables code-sharing between "clip editors"
2025-07-29 18:16:35 -06:00
Paul Davis
8037762690 braces, please 2025-07-29 18:16:35 -06:00
Paul Davis
561dde4d3a move grid/snap actions into common editing groups and bindings 2025-07-13 10:37:26 -06:00
Paul Davis
641e3441b8 fix operation of MIDI draw channel dropdown/selector 2025-07-12 11:06:33 -06:00
Paul Davis
38cfd12bac NoCamelCase method names (gui) 2025-07-12 10:51:54 -06:00
Paul Davis
25b1057e7d fix computation of maximum zoom for an editing context
it must take the max_extents_scale() value into consideration.
2025-07-04 12:22:10 -06:00
Paul Davis
baf41a65c3 some incremental improvements in scroomer behavior
Notably dbl-click works consistently/reliably
2025-06-30 09:39:51 -06:00
Paul Davis
87b50a4ecd use method instead of a direct call, to centralize logic 2025-06-28 22:45:08 -06:00
Paul Davis
ad6b6f1e30 desensitize automation keybindings after session is set, to avoid them being active by default
ARDOUR_UI sets all session-sensitive actions to sensitive at session load
2025-06-28 22:44:41 -06:00
Paul Davis
a2c8203a19 use new ArdourDropdown API to build two of the midi draw menus 2025-06-25 22:18:15 -06:00
Paul Davis
567c0e09b8 NO-OP: remove out of date comment 2025-06-24 17:58:08 -06:00
Paul Davis
5e402aa0f9 NO_OP: better code styling 2025-06-24 17:57:47 -06:00
Paul Davis
7cf90f0f54 NO-OP: spaces, please 2025-06-24 17:57:17 -06:00
Paul Davis
e448c3f4aa allow pianorolls not to show MIDI channel selector/dropdown
pianorolls have the visibility channel control. at some point we want the same idea
for the timeline, but it is not there yet
2025-06-23 16:16:12 -06:00
Paul Davis
a17cf3929d NOOP: whitespace around operators 2025-06-23 16:15:36 -06:00
Paul Davis
c6a49fdd50 basic implementation of Live-style kbd-driven automation editing 2025-06-17 14:03:43 -06:00
Paul Davis
ea1695dbc0 code refactoring and action name handling to make follow-playhead work in multiple editing contexts 2025-06-15 21:17:42 -06:00
Robin Gareus
86a0bfdeab
Use consistent label for MIDI channel (main toolbar and pianoroll) 2025-06-13 17:16:59 +02:00
Robin Gareus
4c5284737d
Use action to toggle follow playhead 2025-06-12 22:19:14 +02:00
Robin Gareus
666a32499c
Move the follow_edits from toolbar to editor context bar 2025-06-12 22:11:33 +02:00
Paul Davis
27796ddefb use new follow playhead icon 2025-06-12 12:52:13 -06:00
Paul Davis
08da5255fe tweak EditingContext APIs to get context menus in pianoroll working sensibly
There is now a separate context menu for note-context clicks and "region" context clicks.
Something similar may be desirable for timeline editing too
2025-06-12 12:09:11 -06:00
Paul Davis
b6d8f77173 fix bad lifetime mgmt for VerboseCursor class 2025-05-27 08:49:32 -06:00
Paul Davis
6918a8a267 some rationalization to how Editor & CueEditor (Pianoroll) handle ZoomLevel and TimeOrigin changes 2025-05-19 14:57:19 -06:00
Paul Davis
f6b3caad52 do not attempt to compute samples per pixel (zoom level) on EditingContext if _track_canvas_width is still zero
This leads to undefined/incorrect arithmetic results
2025-05-16 16:43:12 -06:00
Paul Davis
4732e702ce use a Glib constant as a better indication of the return value semantics in an idle callback 2025-05-16 16:43:12 -06:00
Paul Davis
fad3c32267 better handling of cloned bindings/actions 2025-04-01 14:55:32 -06:00
Paul Davis
51dbe70b44 no more trim cursor in drae mode in the pianoroll
For some reason, we allow users to trim notes on the timeline when in
draw mode. Not sure why. We don't allow this in pianorolls, so make
sure the cursors don't suggest otherwise
2025-03-20 14:14:08 -06:00