From 7d6121e2d808da32f85323bf0f06a7e03fa32f86 Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Sun, 9 Mar 2008 16:18:22 -0500 Subject: [PATCH] Tracks are virtual, so use Fl_Widget instead of Fl_Group as base class. --- Control_Track.H | 2 +- Timeline.C | 4 ++-- Track.C | 23 +++++++++++++++++++++-- Track.H | 39 ++++++++------------------------------- Track_Header.C | 2 ++ Track_Header.H | 14 +++++++++----- Track_Widget.H | 2 +- 7 files changed, 44 insertions(+), 42 deletions(-) diff --git a/Control_Track.H b/Control_Track.H index 4543054..a5825a5 100644 --- a/Control_Track.H +++ b/Control_Track.H @@ -44,7 +44,7 @@ public: fl_push_clip( x(), y(), w(), h() ); - Fl_Group::draw(); + draw_box(); int X, Y, W, H; diff --git a/Timeline.C b/Timeline.C index 746edeb..534002e 100644 --- a/Timeline.C +++ b/Timeline.C @@ -114,7 +114,7 @@ Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Overlay_Wi o->align( FL_ALIGN_LEFT ); tempo_track = o; - o->end(); +// o->end(); } @@ -130,7 +130,7 @@ Timeline::Timeline ( int X, int Y, int W, int H, const char* L ) : Fl_Overlay_Wi o->align( FL_ALIGN_LEFT ); time_track = o; - o->end(); + // o->end(); } diff --git a/Track.C b/Track.C index f3fe725..02a4313 100644 --- a/Track.C +++ b/Track.C @@ -29,6 +29,25 @@ queue Track::_delete_queue; Track_Widget *Track::_pushed = NULL; Track_Widget *Track::_belowmouse = NULL; +Track::Track ( int X, int Y, int W, int H ) : Fl_Widget( X, Y, W, H ) +{ + _name = NULL; + + box( FL_DOWN_BOX ); + color( fl_darker( FL_GRAY ) ); + align( FL_ALIGN_LEFT ); + + log_create(); +} + +Track::~Track ( ) +{ + /* FIXME: what to do with regions? */ + parent()->redraw(); + parent()->remove( this ); + log_destroy(); +} + void Track::sort ( void ) { @@ -61,7 +80,7 @@ Track::draw ( void ) fl_push_clip( x(), y(), w(), h() ); - Fl_Group::draw(); + draw_box(); int X, Y, W, H; @@ -332,7 +351,7 @@ Track::handle ( int m ) return retval; } else - return Fl_Group::handle( m ); + return Fl_Widget::handle( m ); } } } diff --git a/Track.H b/Track.H index a9ea564..2cefd36 100644 --- a/Track.H +++ b/Track.H @@ -19,6 +19,7 @@ #pragma once +#include #include #include // #include "Region.H" @@ -36,7 +37,10 @@ using namespace std; class Region; class Track_Widget; -class Track : public Fl_Group, public Loggable + +/* This is the base class for all track types. */ + +class Track : public Fl_Widget, public Loggable { char *_name; @@ -82,41 +86,14 @@ protected: public: - Track ( int X, int Y, int W, int H ) : Fl_Group( X, Y, W, H ) - { - _name = NULL; - - box( FL_DOWN_BOX ); - color( fl_darker( FL_GRAY ) ); - - end(); - - log_create(); - } - -/* const Track & operator= ( const Track & rhs ) */ -/* { */ -/* if ( *this = rhs ) */ -/* return; */ - -/* } */ - - virtual ~Track ( ) - { - /* FIXME: what to do with regions? */ - parent()->redraw(); - parent()->remove( this ); - log_destroy(); - } - - - + Track ( int X, int Y, int W, int H ); + virtual ~Track ( ); static Track_Widget *pushed ( void ) { return _pushed; }; static Track_Widget *belowmouse ( void ) { return _belowmouse; }; const char * name ( void ) const { return _name; } - void name ( char *s ) { if ( _name ) free( _name ); _name = s; } + void name ( char *s ) { if ( _name ) free( _name ); _name = s; label( _name ); } void sort ( void ); diff --git a/Track_Header.C b/Track_Header.C index be177ff..efaa820 100644 --- a/Track_Header.C +++ b/Track_Header.C @@ -252,6 +252,8 @@ Track_Header::size ( int v ) resize(); } + + void Track_Header::track( Track * t ) { diff --git a/Track_Header.H b/Track_Header.H index 381b6f5..8c78d42 100644 --- a/Track_Header.H +++ b/Track_Header.H @@ -212,11 +212,15 @@ public: void add ( Track * t ) { - takes->add( t ); - char pat[20]; - snprintf( pat, sizeof( pat ), "%d", takes->children() ); - t->name( strdup( pat ) ); - take_menu->add( t->name() ); + takes->insert( *t, 0 ); + if ( ! t->name() ) + { + char pat[20]; + snprintf( pat, sizeof( pat ), "%d", takes->children() ); + t->name( strdup( pat ) ); + take_menu->add( t->name() ); + } + } void remote ( Track *t ) diff --git a/Track_Widget.H b/Track_Widget.H index 3510176..5434997 100644 --- a/Track_Widget.H +++ b/Track_Widget.H @@ -139,7 +139,7 @@ public: int dispatch ( int m ); - Fl_Group * parent ( void ) const { return _track; } + Fl_Widget * parent ( void ) const { return _track; } int scroll_x ( void ) const { return timeline->ts_to_x( timeline->xoffset ); } nframes_t scroll_ts ( void ) const { return timeline->xoffset; }