Commit graph

40715 commits

Author SHA1 Message Date
Paul Davis
fece4f0ca8 fix thinko in handling of cue page context menus
Context menus should (unless there is a very strong reason otherwise) be
popped up on button press, not button release. In addition Gtk::Menu::popup()
should be given the button ID of the button used, so that it can manage
both styles of menu interaction (press/drag/release and press/release/drag/press)
2025-04-28 14:26:15 -06:00
Paul Davis
975b01060a enforce a 1 octave minimum note range in MidiViews
May revisit this to allow less in the future
2025-04-28 08:58:25 -06:00
edwar4rd
747be87974 Fix typo in ardour.keys.in causing spacebar to not work 2025-04-28 16:55:54 +08:00
Robin Gareus
cb8dd39f31
Allow SchedRR for I/O threads (fix copy/paste typo) 2025-04-26 16:11:51 +02:00
Robin Gareus
89003b1708
Only show Surround settings in group dialog when available at compile time 2025-04-25 21:06:30 +02:00
Paul Davis
8d7b4f7991 fixes so that cursor changes inside a MidiRegionView work as intended
They already worked in the PianorollMidiView, because that hands off enter/leave events
to the parent EditingContext (a Pianoroll). But MidiRegionView and Editor were
not interacting in the same way, so leaving a note object would not cause the Editor
to do the right thing with the cursor.
2025-04-25 11:28:45 -06:00
Paul Davis
52996e7a8d fix thinko when setting MIDI trigger first/last event indices
Unclear why I use this pattern when the change here uses the more normal way
of finding the upper/lower of some values. Either way, the code as it was would
skip the first event in a MIDI trigger (most of the time, anyway)
2025-04-24 16:41:49 -06:00
Paul Davis
c45103c1d7 ensure zoom of an empty pianoroll matches that when an empty slot is shown 2025-04-24 12:07:19 -06:00
Paul Davis
5526880ac8 do not create an empty region for a cue slot when it is selected for editing
There's an assumption that slots with regions cannot be recorded into,
so adding a region to an empty slot makes it impossible to record to that
slot.

Create the region at the appropriate point during a NoteCreateDrag.

This may also be needed for some automation drawing drag operations.
2025-04-24 12:07:19 -06:00
Paul Davis
a835de7e08 add a comment to explain a default length 2025-04-24 12:07:19 -06:00
Paul Davis
ce236c49ca when building a tempo map for the Pianoroll, consider using the main tempo map
This is only relevant when a Pianoroll is used to edit a timeline region.
2025-04-24 12:07:19 -06:00
Paul Davis
a582255559 remove another unnecessary call to Pianoroll::zoom_to_show() 2025-04-24 12:07:19 -06:00
Paul Davis
33943157c5 remove debug output 2025-04-24 12:07:19 -06:00
Paul Davis
008c624a2d no need for a call to zoom_to_show() after set_region()
Pianoroll::set_region() calls that method itself.
2025-04-24 12:07:19 -06:00
Paul Davis
6f45a9f9ac use new spacebar action in key bindings 2025-04-24 12:07:19 -06:00
Paul Davis
9974218c05 add Transport/SpacebarAction action to make spacebar more useful when clip recording 2025-04-24 12:07:19 -06:00
Paul Davis
3918fea26f provide Session::armed_triggerbox() API 2025-04-24 12:07:19 -06:00
Paul Davis
a41699737f fix bug in lifetime of MidiView::_ghost_note
As noted in 8b389ee829, we now clear the _note_group container
before any other Note items might be deleted. But since this
may delete the _ghost_note, we have to be sure to reset
that to a null ptr to avoid a double-free later during
~MidiView
2025-04-24 12:07:19 -06:00
Paul Davis
86ef6a5e59 remove debug output 2025-04-24 12:07:19 -06:00
Paul Davis
a3213de634 NO-OP: remove double semicolon 2025-04-24 12:07:19 -06:00
Paul Davis
02aeb3895f NO-OP: newline/whitespace/brace 2025-04-24 12:07:19 -06:00
npt-1707
dd0de15269
Fix potential vulnerable cloned functions: Bug: Lua can generate wrong code when _ENV is <const> 2025-04-24 13:05:49 +02:00
npt-1707
edf2ce7cfe Fix potential vulnerable cloned functions: Save stack space while handling errors 2025-04-24 17:06:24 +08:00
Robin Gareus
5f1bea0b6b
Fix rec-arm disable
This broke in 91f9561958, when the condition for clip
recording was added.
2025-04-19 18:40:50 +02:00
John Emmas
d285ff365e Add a visibility specifier that's now needed
Following the introduction of 'Pianoroll::region_prop_change()' (commit #29833d75c9) the operator<< (for PBD::PropertyChange) now needs to be visible outside of libpbd
2025-04-19 13:33:36 +01:00
Paul Davis
292e722758 use bg[ACTIVE] for scrollbar troughs, like all other GTK engines 2025-04-18 15:52:07 -06:00
Robin Gareus
729622204f
Make scrollbar less prominent with default theme 2025-04-18 23:37:15 +02:00
Robin Gareus
30e84a49ba
Fix Wreorder 2025-04-18 23:06:41 +02:00
Paul Davis
29833d75c9 add a horizontal scrollbar to the pianoroll 2025-04-18 15:00:55 -06:00
Paul Davis
743657e265 simplify scrollbar slider drawing code
No more pattern for the slider, brighter shade for prelight,
and keep prelight color even when widget is active
2025-04-18 15:00:55 -06:00
Paul Davis
693565c131 use new color alias name for theme spec of scroll bar sliders (plus comments) 2025-04-18 15:00:55 -06:00
Paul Davis
e89e4ac5c5 add new color alias for scrollbar sliders (neutral:mid for all exisitng themes) 2025-04-18 15:00:55 -06:00
Robin Gareus
e87676105f
Fix videotimeline - initialize height
Previously this worked since rulers were initialized first, setting
the videtimeline's height. After the ruler overhaul the
videotl_bar_height was not set until after the ruler
is shown. This lead to requesting some insanely large video frame...
2025-04-18 04:40:37 +02:00
Robin Gareus
2581a841e0
Minimize session dialog code changes with downstream projects 2025-04-17 15:54:30 +02:00
Paul Davis
2c69671ee3 if an empty slot is selected on the cue page, set up a new region to edit 2025-04-16 20:44:11 -06:00
Paul Davis
ef0a8ba524 allow a trigger slot to use an empty region
hopefully there are no complications from this :(
2025-04-16 20:43:37 -06:00
Paul Davis
9415dad9cc fix the visible channel in a pianoroll if the model has no channel data 2025-04-16 20:43:10 -06:00
Paul Davis
91f6245f44 experiments for the ardour startup dialog 2025-04-16 12:22:57 -06:00
Paul Davis
7cf63d1d46 triggebox: random extra DEBUG_TRACE output
Also, if a trigger is already stopped, ::shutdown_from_fwd() now does
nothing at all
2025-04-16 12:05:59 -06:00
Paul Davis
40565b5740 pianoroll: use a larger, bolder font for ruler text 2025-04-16 10:17:32 -06:00
Paul Davis
1671b145ba pianoroll: click on (BBT) ruler now locates 2025-04-16 10:17:08 -06:00
Paul Davis
f69a18bfee pianoroll: stop using tempo and meter rulers since they are of zero use
One day when we figure out how we might use this sort of thing, they
can come back.
2025-04-16 10:15:54 -06:00
Paul Davis
ebda6bf0c5 rework PBD::Signal emission code to avoid memory allocation
We now use a stack allocator when making a copy of current connection state at
the start of the signal emission process, and when collecting results from
signal handlers in the case of a non-void return type.

These changes also include a functionally neutral reworking of how the connection
state copy is made and then used to check that a connection/handler is still
valid mid-emission.

Heap allocation will still happen if a signal has more than (currently) 512
connections. A little experimentation reveals that the maximum number of
connections is typically nroutes+1, so 512 seems like a reasonable choice
for this.
2025-04-16 09:09:57 -06:00
Paul Davis
f66f81546d fix several warnings from PBD::Signal due to a missing return call for some types 2025-04-15 22:34:49 -06:00
Robin Gareus
e26edc93d6
Fix crash when changing DPI while a marker is selected
~LocationMarkers() emits CatchDeletion, which calls
Selection::remove(ArdourMarker*) which in turn calls
Editor::marker_selection_changed(), which can cause a
heap-use-after-free.

So we first need to clear the location_markers map,
before deleting the markers.
2025-04-16 04:53:26 +02:00
Robin Gareus
95949e6267
Implement multi-touch support for ArdourKnobs 2025-04-15 21:59:40 +02:00
Robin Gareus
2a9776de5a
Revert "Linux/X11/touch: don't send duplicate mouse-up events for first touch"
This reverts commit 8eab71fef4.
2025-04-15 21:48:55 +02:00
Robin Gareus
5a90eb0776
Fix double toggle on repeat call of on_button_release_event
This can happen with touch screens.. leading to
`set_active (!get_active ());` being called twice, and effective NOOP.
2025-04-15 21:48:42 +02:00
Robin Gareus
d0a5bff06e
ACE Inline Correlation Meter (needs work, debug builds only) 2025-04-15 19:08:42 +02:00
Robin Gareus
bf6ad57083
Add Lua bindings for StereoCorrelation meter 2025-04-15 19:08:02 +02:00