summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-02-26 18:17:50 +0100
committerPaul Davis <paul@linuxaudiosystems.com>2017-02-26 18:24:56 +0100
commit67ba18d15430f3e639d97a8a30717d7ff009bec1 (patch)
tree6246006f1aa464ad26464ad53cf70516374481d3
parent02cf331403458c0895b3f44689ca5a781977818f (diff)
selected Stripables now have a counter to indicate the order they were selected in
-rw-r--r--libs/ardour/ardour/presentation_info.h5
-rw-r--r--libs/ardour/presentation_info.cc3
2 files changed, 8 insertions, 0 deletions
diff --git a/libs/ardour/ardour/presentation_info.h b/libs/ardour/ardour/presentation_info.h
index 6984930f3d..7c847e9fce 100644
--- a/libs/ardour/ardour/presentation_info.h
+++ b/libs/ardour/ardour/presentation_info.h
@@ -158,6 +158,8 @@ class LIBARDOUR_API PresentationInfo : public PBD::Stateful
bool order_set() const { return _flags & OrderSet; }
+ int selection_cnt() const { return _selection_cnt; }
+
bool hidden() const { return _flags & Hidden; }
bool selected() const { return _flags & Selected; }
bool special() const { return _flags & (MasterOut|MonitorOut|Auditioner); }
@@ -263,11 +265,14 @@ class LIBARDOUR_API PresentationInfo : public PBD::Stateful
order_t _order;
Flag _flags;
color_t _color;
+ int _selection_cnt;
static PBD::PropertyChange _pending_static_changes;
static Glib::Threads::Mutex static_signal_lock;
static int _change_signal_suspended;
static void send_static_change (const PBD::PropertyChange&);
+
+ static int selection_counter;
};
}
diff --git a/libs/ardour/presentation_info.cc b/libs/ardour/presentation_info.cc
index 25048eaf98..e3e7700d40 100644
--- a/libs/ardour/presentation_info.cc
+++ b/libs/ardour/presentation_info.cc
@@ -43,6 +43,7 @@ PBD::Signal1<void,PropertyChange const &> PresentationInfo::Change;
Glib::Threads::Mutex PresentationInfo::static_signal_lock;
int PresentationInfo::_change_signal_suspended = 0;
PBD::PropertyChange PresentationInfo::_pending_static_changes;
+int PresentationInfo::selection_counter = 0;
namespace ARDOUR {
namespace Properties {
@@ -243,8 +244,10 @@ PresentationInfo::set_selected (bool yn)
if (yn != selected()) {
if (yn) {
_flags = Flag (_flags | Selected);
+ _selection_cnt = g_atomic_int_add (&selection_counter, 1);
} else {
_flags = Flag (_flags & ~Selected);
+ _selection_cnt = 0;
}
send_change (PropertyChange (Properties::selected));
send_static_change (PropertyChange (Properties::selected));