Commit graph

42021 commits

Author SHA1 Message Date
Paul Davis
5240e3af32 delete route comment editor in RouteUI rather than a delete this lambda
Also, no need to reset the stripable's color picker - the destructors for both color pickers
and comment editors do this themselves
2026-01-20 10:32:08 -07:00
Paul Davis
ed984ec3b2 delete stripable color picker in RouteUI rather than a delete this lambda 2026-01-20 10:22:42 -07:00
Paul Davis
f331a0f940 refactor color dialog code to separate generic from stripable-related 2026-01-20 10:09:46 -07:00
Paul Davis
420c383fd0 route group dialog uses ArdourColorButton (again, sort of) 2026-01-20 09:51:21 -07:00
Paul Davis
01a1829451 PaletteDialog -> ArdourColorDialog; add back ArdourColorButton
This time, the class heirarchy is cleaner: ArdourColorDialog and ArdourColorButton have
nothing to with Stripables
2026-01-20 09:51:00 -07:00
Paul Davis
169e81773c trigger UI uses the palette-bearing ArdourColorDialog 2026-01-20 08:39:59 -07:00
Paul Davis
4aeba817b9 introduce ArdourColorDialog, a Gtk::ColorSelectionDialog with a palette 2026-01-20 08:39:27 -07:00
Paul Davis
e6bf82f37f remove unnecessary #include 2026-01-19 22:00:35 -07:00
Paul Davis
236a9bf73b just delete RouteCommentEditor directly, not via an idle callback
Using an idle callback delays desctruction for too long, and the dangling reference
to a stripable causes havoc
2026-01-19 22:00:04 -07:00
Paul Davis
3f17381d49 just delete StripableColorPicker directly, not via an idle callback
Using an idle callback delays desctruction for too long, and the dangling reference
to a Stripable causes havoc
2026-01-19 21:56:33 -07:00
Paul Davis
72940988d9 remove unnecessary forward declaration 2026-01-19 20:23:30 -07:00
Paul Davis
57ea5acfa0 stripable color picking: stripable has handle to its color picker dialog
This involves multiple interlinked changes:

1. Redesigning StripableColorDialog to:
     a) require a std::shared_ptr<Stripable> at construction
     b) simplify the rest of its API down to just ::popup (Gdk::Window* parent)

2. dropping ArdourColorButton which was only used in the RouteGroupDialog and
served no real purpose since no Stripable was involved (hence, deriving from
StripableColorDialog was pointless)

3. dropping StripableColorDialog members of both RouteUI and the VCA UI
objects.

4. relying on the already-existing Stripable active_color_picker() API to hold
a reference to the dialog, and using that before creating a new one.

THe dialogs will be deleted in a GUI idle callback when the DropReferences signal
is emitted for the Stripable.
2026-01-19 19:52:29 -07:00
Paul Davis
3a649df6b6 routeUI: redesign RouteCommentEditor and its usage
The previous design is broken by the editor mixer strip. If used to open the
comment editor for multiple routes, it would assign its own RouteCommentEditor
as the comment editor for each route.

This new design follows the model used by plugin UIs, in which the libardour
object (here, a Route) itself has a handle on its editor, and we always
look that up before creating a new one.

The new design requires passing a std::shared_ptr<Route> to the comment editor;
the comment editor itself is deleted (in the GUI thread) when the
DropReferences signal is emitted for the Route.

This design continues to meet the original goal of having only a single comment
editor per Route, but in a more correct way than before, and a way that
parallels the handling of plugin UIs.
2026-01-19 19:52:29 -07:00
Paul Davis
60310c485c route: change API to use RouteCommentEditor rather than ArdourWindow
Personally, I'd as soon use void* for these, but we had a GUI type
before so nothing is lost or gained by using a different GUI type
now.
2026-01-19 19:52:29 -07:00
Paul Davis
0705b2e925 route group dialog: use a Gtk::ColorButton not an ArdourColorButton
The latter is about to be removed from the code.
2026-01-19 19:52:29 -07:00
Paul Davis
7118c7de25 triggerUI: just use a Gtk::ColorSelectionDialog for color choice 2026-01-19 19:52:29 -07:00
Robin Gareus
e9ccefea31
Remove cruft, this was superseded by round_robin_palette_color 2026-01-20 03:13:37 +01:00
Robin Gareus
6d654b5ed3
Fix crash when dragging on an empty arrangement TreeView 2026-01-19 20:31:10 +01:00
Paul Davis
551d527dd0 modify unescaped < and > in new MIDNAM file 2026-01-19 09:32:49 -07:00
Robin Gareus
789cab2bb3
Consolidate RegionFX signal emission 2026-01-19 17:17:33 +01:00
Steffen Klein
37e8bf2545 corrected SE-70 Standard after testing 2026-01-19 09:10:15 -07:00
Steffen Klein
4ee93692ed added MIDNAM files for Boss SE-70
2 files, for Standard presets and Guitar presets.
2026-01-19 09:10:15 -07:00
Robin Gareus
05da36d397
Remove RegionFxChanged 2026-01-19 03:44:29 +01:00
Robin Gareus
02da9cd746
Use region_fx_changed property signal instead of RegionFxChanged 2026-01-19 03:44:29 +01:00
Robin Gareus
5dccad42a2
Prepare to replace Signal RegionFxChanged with Property
Properties::region_fx may not be emitted for add/remove/reorder
cases when no disk-reader overrride is required.
However we need to inform the GUI when such changes happen,
and various UI widgets listen to property changes.
2026-01-19 03:44:28 +01:00
Paul Davis
c6e5521918 cue editor: fixed size for capture duration selector 2026-01-18 13:39:35 -07:00
Paul Davis
89956de588 clip editor: desensitize "play" button when slot is rec-armed 2026-01-18 13:23:51 -07:00
Paul Davis
a471083c52 NO-OP: style guide braces 2026-01-18 13:04:27 -07:00
Paul Davis
d1f8c6ebc5 remove unused rec_length member from CueEditor 2026-01-18 12:52:27 -07:00
Paul Davis
8ad05fe519 update recording length selector/dropdown based on trigger capture duration 2026-01-18 12:52:15 -07:00
Paul Davis
d53fa4bee4 trigger recording length selector now sets trigger capture duration 2026-01-18 12:51:45 -07:00
Paul Davis
551160cb75 do not provide capture duration argument in calls to Trigger::arm()
Just use the trigger's capture duration instead
2026-01-18 12:50:58 -07:00
Paul Davis
627a74ef4a triggerbox: use trigger capture duration if duration not given in call to ::arm() 2026-01-18 12:49:55 -07:00
Paul Davis
412bae4fdd triggerbox: add a capture duration property to all triggers 2026-01-18 11:49:01 -07:00
Paul Davis
757398a209 bring some rationality to the pianoroll (clip) rec-enable button 2026-01-17 19:13:25 -07:00
Paul Davis
ecf9e9e368 remvoe unused variable 2026-01-17 19:13:25 -07:00
Robin Gareus
9ed6eeacd2
Episode VI: Return of the Auto Return toggle
Anyone who complains about the icon will be fed to a Sarlacc :)
https://discourse.ardour.org/t/add-button-back-for-auto-return/112812
2026-01-18 02:16:17 +01:00
Paul Davis
f6351399c3 fix non-display of MIDI notes after unbounded clip record
We should not call CueEditor::rec_enable_change() from CueEditor::trigger_arm_change()
because (a) the rec-enable change is coming anyway (b) at the time a trigger is
disarmed, the triggerbox is still rec-enabled. This means that in the end, a MidiView
gets its ::begin_write() method called again before we call ::model_changed()
and that leads it to have non-null _unfinished_live_notes (i.e. we're actively
recording, so do thing).
2026-01-16 15:01:48 -07:00
Paul Davis
e00c051ff9 pianoroll: fix incorrect reposition of count in text during width reset 2026-01-16 11:18:11 -07:00
Paul Davis
f43b1d8c84 triggerbox: keep track of note-ons before actively recording a clip
This allows the user to not have to aim for such precise timing, since they can
hold the note down during the count-in.

At some point the question will arise why we don't do this for controllers
etc. too.
2026-01-16 08:04:14 -07:00
Paul Davis
5e9cb952c2 extent MidiNoteTracker API to be able to ::flush_notes() to an EventSink
This is a bit ironic, since EventSink is an abstract base class for MidiBuffer, which is
already supported for a flush_notes() call. But we use MidiBuffer::push_back() for that,
mostly for efficiency purposes (write() can insert an event at any time).
2026-01-16 08:04:13 -07:00
Grzegorz Pruchniakowski
c4cdb2a567
Typos in README 2026-01-15 23:49:26 +01:00
jean-emmanuel
3cd1c0e4b1
Dropdown/Metabutton: fix some scaling issues 2026-01-15 00:39:54 +01:00
jean-emmanuel
f3dbaae6e8
Metabutton: avoid prelight from affecting vertical separator line 2026-01-15 00:39:31 +01:00
jean-emmanuel
a18c8e3287
Dropdown: adjust separator position and use themable outline color 2026-01-15 00:38:29 +01:00
jean-emmanuel
4980efdfa5
Dropdown: move triangle slightly to the left 2026-01-15 00:38:02 +01:00
Robin Gareus
2a0fb060d1
CoreAudio: overhaul aggregate device drift compensation 2026-01-15 00:25:07 +01:00
Paul Davis
24f2cd321d midi port config table: FILL|EXPAND is the default pack option, so no need to specify 2026-01-14 14:26:47 -07:00
Paul Davis
a90850abec preferences: expand the height of the listviews in the midi port config tab
There is some weird behavior here, where causing a refill of the listview (e.g. by changing
the status of a port flag) doesn't interact correctly with the scrollbar. I can't find
a solution at the present time, so just grow the listview vertical size to accomodate a lot
more (potential) MIDI ports in both lists (without altering the prefs dialog size)
2026-01-14 14:26:21 -07:00
Paul Davis
e309663df6 when MIDI port flags change, session bundles must be rebuilt 2026-01-14 13:27:45 -07:00