Commit Graph

32 Commits

Author SHA1 Message Date
Robin Gareus
b783b3264c Allow to remove hidden stripables from selection 2025-11-04 19:59:07 +01:00
Robin Gareus
a94dba4ef4 Add preference to disable implicit grouping 2025-08-23 09:59:02 +02:00
Robin Gareus
a250bd4e76 Allow to select inactive tracks
This is a prerequisite to allow to remove inactive tracks,
and operate on multiple selected inactive tracks (show/hide).
2025-08-05 23:16:02 +02:00
Paul Davis
3f1486fa12 coreselection: fix thinko
The core selection can be (a) stripables (b) automation controls (c) possibly a combination of both

Any given selection op might pass (a) or (b) or (c), so we need to handle the
case where (a) is null.
2024-08-05 20:14:28 -06:00
Paul Davis
b21dd1212e redesign API and internals of CoreSelection for more universality
We now have two basic methods for CoreSelection

* when selecting a stripable, use ::select_stripable_and_maybe_group() with
  appropriate arguments to cover the group selection aspects.

* when selecting an automation control that is part of a stripable, call
  ::select_stripable_with_control()

The old, more simply named methods (set/add/toggle etc.) have all been
made private, and their internal implementations changed somewhat.

This commit includes changes to control surfaces that use CoreSelection directly.
2024-08-02 11:50:21 -06:00
Robin Gareus
3de600625f Consolidate internal bus checks (1/2) 2024-01-06 20:21:51 +01:00
Paul Davis
3c44c326c2 add an assert() to check a target in CoreSelection::get_stripables_for_op() 2023-07-31 21:11:36 -06:00
Paul Davis
0e6764c4c8 improve and extend group selection logic 2023-07-31 13:53:42 -06:00
Paul Davis
03105aa760 libardour changes to support new selection/group logic 2023-07-31 13:36:14 -06:00
Paul Davis
4ba4cd69ff switch from glib atomic to std::atomic (libs edition) 2023-03-24 14:19:15 -06:00
Paul Davis
b35518e212 switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
Paul Davis
7bf89ce109 Constification: make Stateful::get_state() const, with all other required const-ness added (libs) 2022-04-06 21:56:59 -06:00
David Robillard
57a3db06f8 OSC: Fix potential crash on select-prev-route (#8670)
If the selection here is empty for whatever reason, it crashed with a null
pointer dereference.
2021-06-18 12:55:45 -04:00
Robin Gareus
cc7b8b1bc5 gcc-11 compat, volatile atomic variables (1/2)
"While 'atomic' has a volatile qualifier, this is a historical
artifact and the pointer passed to it should not be volatile."

Furthermore "It is very important that all accesses to a
particular integer or pointer be performed using only this API"
(from https://developer.gnome.org/glib/2.68/glib-Atomic-Operations.html)

Hence initialization of atomic variables is changed to also use
this API, instead of directly initializing the value.

This also fixes a few cases where atomic variables were
accessed directly.

see also libs/pbd/pbd/g_atomic_compat.h
2021-03-22 15:30:07 +01:00
Robin Gareus
26a1d55f7a Implement _first_selected_stripable as part of CoreSelection 2020-10-18 14:29:12 +02:00
Nikolaus Gullotta
85f27b28be Only select all routes in a given group if the group is active 2020-01-23 12:58:59 -06:00
Robin Gareus
a22f918d9d Update libardour GPL boilerplate and (C) from git log 2019-08-03 15:53:16 +02:00
Robin Gareus
357361c89d Fix --no-nls (4/5), i18n include order in libs/*
"i18n.h" needs to be included last (after any includes that may indirectly
pull in getext or libintl etc)
2018-09-21 19:05:39 +02:00
Paul Davis
03c5a35a8c Monitor should be *really* unselectable 2018-08-24 18:26:01 -04:00
Paul Davis
0db0d85108 no reason for 2 template types in CoreSelection::select_adjacent_stripable() 2018-08-24 18:26:01 -04:00
Paul Davis
a9ae875b71 a couple more explanatory comments, and rename a variable to be more clear 2018-08-24 14:17:14 -04:00
Paul Davis
92b3d40e3d fix comment (method is now a template) 2018-08-24 14:11:00 -04:00
Paul Davis
2d0416a016 add new methods to ARDOUR::CoreSelection to centralize selecting next/prev stripables 2018-08-24 14:04:18 -04:00
Robin Gareus
515bd5ad4d Remove some debug output 2017-08-06 14:48:18 +02:00
Robin Gareus
f25824ed28 "Selected" is a PresentationInfo Property.
This fixes MIDI Input follows MIDI track selection (and maybe other
issues) and hopefully breaks nothing else (most places subscribe to
both Stripable::PropertyChanged and PresentationInfo::PropertyChanged).
2017-08-05 21:12:52 +02:00
Paul Davis
feab5ef91e re-order per-object and global selection change signals 2017-05-11 18:29:03 +01:00
Paul Davis
5830ddfec2 emit per-Stateful PropertyChanged signal when Stripables become selected 2017-05-11 10:04:28 +01:00
Paul Davis
bcbdd858fa Selection::get_stripables() needs to recurse into an Automatable's child Automatables when looking for for an Automation Control
It also needs renaming (to come)
2017-05-10 08:52:55 +01:00
Robin Gareus
4e08f5c169 iterator std::set::erase (iterator) is C++11 2017-05-08 16:30:54 +02:00
Paul Davis
24b8004bf7 when removing Stripables from CoreSelection by ID, be sure to remove all possible entries in the Selection
A Stripable may have itself plus zero-to-N automation controls in
CoreSelection.
2017-05-08 10:41:12 +01:00
John Emmas
e8e68fd8c6 MSVC won't allow us to erase an item referenced by const_iterator 2017-05-06 13:33:38 +01:00
Paul Davis
35a9facdae add missing files from selection development branch(es) 2017-05-05 19:25:35 +01:00