From f5aaee31f739cb7ac5e74504dfe333eb2cbd0158 Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Thu, 21 Feb 2008 01:17:49 -0600 Subject: [PATCH] Permit removal of Track_Widgets. --- Audio_Track.H | 7 +++++++ Region.H | 7 +++++++ Track.C | 11 +++++++++++ Track.H | 9 +++++++++ 4 files changed, 34 insertions(+) diff --git a/Audio_Track.H b/Audio_Track.H index ffe748c..cc542e9 100644 --- a/Audio_Track.H +++ b/Audio_Track.H @@ -21,6 +21,8 @@ #include "Track.H" +#include + class Audio_Track : public Track { @@ -28,6 +30,11 @@ public: Audio_Track ( int X, int Y, int W, int H ) : Track( X, Y, W, H ) { + +/* Fl_Group *o = new Fl_Group( 0, 0, 100, H ); */ +/* new Fl_Input( 0, 0, 100, 24, "name:" ); */ +/* o->end(); */ + } /** event handler that supports DND of audio clips */ diff --git a/Region.H b/Region.H index 3888183..dc86f47 100644 --- a/Region.H +++ b/Region.H @@ -204,6 +204,13 @@ public: ox = x() - X; oy = y() - Y; + if ( Fl::event_state() & FL_CTRL && + Fl::event_button() == 3 ) + { + _track->queue_delete( this ); + return 0; + } + return 1; } case FL_RELEASE: diff --git a/Track.C b/Track.C index 04678e0..3899689 100644 --- a/Track.C +++ b/Track.C @@ -25,6 +25,8 @@ #include +Track_Widget * Track::_queued_widget = NULL; + static bool sort_func ( Track_Widget *lhs, Track_Widget *rhs ) { @@ -163,6 +165,15 @@ Track::handle ( int m ) if ( retval && m == FL_RELEASE ) current_widget = NULL; + if ( _queued_widget ) + { + remove( _queued_widget ); + delete _queued_widget; + _queued_widget = NULL; + current_widget = NULL; + redraw(); + } + return retval; } else diff --git a/Track.H b/Track.H index 176fbb3..f4c6d78 100644 --- a/Track.H +++ b/Track.H @@ -40,6 +40,8 @@ class Track : public Fl_Group Track *_prev; char *_name; + static Track_Widget * _queued_widget; + protected: list _widgets; @@ -67,6 +69,13 @@ public: void remove ( Track_Widget *r ); void add ( Track_Widget *r ); + void queue_delete ( Track_Widget *r ) + { + assert( ! _queued_widget ); + + _queued_widget = r; + } + virtual void snap ( Track_Widget *r ); virtual int handle ( int m );