summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_drag.cc16
-rw-r--r--gtk2_ardour/editor_drag.h3
2 files changed, 16 insertions, 3 deletions
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index 7ac8f9c16a..d82156bfd1 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -4507,6 +4507,15 @@ RangeMarkerBarDrag::RangeMarkerBarDrag (Editor* e, ArdourCanvas::Item* i, Operat
_drag_rect->set_outline_color (ARDOUR_UI::config()->color ("range drag rect"));
}
+RangeMarkerBarDrag::~RangeMarkerBarDrag()
+{
+ /* normal canvas items will be cleaned up when their parent group is deleted. But
+ this item is created as the child of a long-lived parent group, and so we
+ need to explicitly delete it.
+ */
+ delete _drag_rect;
+}
+
void
RangeMarkerBarDrag::start_grab (GdkEvent* event, Gdk::Cursor *)
{
@@ -4714,9 +4723,12 @@ RangeMarkerBarDrag::finished (GdkEvent* event, bool movement_occurred)
}
void
-RangeMarkerBarDrag::aborted (bool)
+RangeMarkerBarDrag::aborted (bool movement_occured)
{
- /* XXX: TODO */
+ if (movement_occured) {
+ _crect->hide ();
+ _drag_rect->hide ();
+ }
}
void
diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h
index 66ea64eb54..64e894c092 100644
--- a/gtk2_ardour/editor_drag.h
+++ b/gtk2_ardour/editor_drag.h
@@ -995,7 +995,8 @@ public:
};
RangeMarkerBarDrag (Editor *, ArdourCanvas::Item *, Operation);
-
+ ~RangeMarkerBarDrag ();
+
void start_grab (GdkEvent *, Gdk::Cursor* c = 0);
void motion (GdkEvent *, bool);
void finished (GdkEvent *, bool);