From bea8a4ee0a29109d73c7e09dcc8ca9107cf4c9be Mon Sep 17 00:00:00 2001 From: Valeriy Kamyshniy Date: Thu, 5 Feb 2015 19:39:45 +0200 Subject: [PATCH] =?UTF-8?q?[Summary]=20Fixing=20a=20number=20of=20bugs,=20?= =?UTF-8?q?which=20are=20=E2=80=9Cwrong=20selection=20of=20Markers?= =?UTF-8?q?=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gtk2_ardour/marker.cc | 16 ++++++++++------ gtk2_ardour/marker.h | 8 +++++--- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/gtk2_ardour/marker.cc b/gtk2_ardour/marker.cc index a7b0db1356..d8a9601686 100644 --- a/gtk2_ardour/marker.cc +++ b/gtk2_ardour/marker.cc @@ -363,6 +363,7 @@ Marker::Marker (ARDOUR::Location* l, PublicEditor& ed, ArdourCanvas::Container& , left_drag_handle (0) , right_drag_handle (0) , frame_position (start_pos) + , _selected (false) , _type (type) , _shown (false) , _height (height) @@ -518,16 +519,19 @@ Marker::canvas_height_set (double h) void Marker::set_selected (bool yn) { + if(yn != _selected) { + _selected = yn; /* only show selection status for non-skip (range) markers */ if (_location && !_location->is_skip()) { - if (yn) { - set_color (ARDOUR_UI::config()->get_canvasvar_LocationSelected()); - } else { - reset_color (); - } + if (yn) { + set_color (ARDOUR_UI::config()->get_canvasvar_LocationSelected()); + } else { + reset_color (); + } } - ARDOUR_UI::instance()->set_session_dirty (); + ARDOUR_UI::instance()->set_session_dirty (); + } } void diff --git a/gtk2_ardour/marker.h b/gtk2_ardour/marker.h index 9ed6686ad2..b161480eea 100644 --- a/gtk2_ardour/marker.h +++ b/gtk2_ardour/marker.h @@ -85,12 +85,13 @@ class Marker : public sigc::trackable void set_name (const std::string&); void set_selected (bool yn); - void set_color (ArdourCanvas::Color); - void reset_color (); + bool selected () const { return _selected; } + void set_color (ArdourCanvas::Color); + void reset_color (); void set_position (framepos_t start, framepos_t end = -1) { return _set_position (start, end); - } + } framepos_t position() const { return frame_position; } @@ -139,6 +140,7 @@ class Marker : public sigc::trackable double unit_position; framepos_t frame_position; double _shift; + bool _selected; Type _type; int name_height; bool _shown;