Tracks are virtual, so use Fl_Widget instead of Fl_Group as base class.
This commit is contained in:
parent
8a467843d0
commit
7d6121e2d8
|
@ -44,7 +44,7 @@ public:
|
||||||
|
|
||||||
fl_push_clip( x(), y(), w(), h() );
|
fl_push_clip( x(), y(), w(), h() );
|
||||||
|
|
||||||
Fl_Group::draw();
|
draw_box();
|
||||||
|
|
||||||
int X, Y, W, H;
|
int X, Y, W, H;
|
||||||
|
|
||||||
|
|
|
@ -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 );
|
o->align( FL_ALIGN_LEFT );
|
||||||
|
|
||||||
tempo_track = o;
|
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 );
|
o->align( FL_ALIGN_LEFT );
|
||||||
|
|
||||||
time_track = o;
|
time_track = o;
|
||||||
o->end();
|
// o->end();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
23
Track.C
23
Track.C
|
@ -29,6 +29,25 @@ queue <Track_Widget *> Track::_delete_queue;
|
||||||
Track_Widget *Track::_pushed = NULL;
|
Track_Widget *Track::_pushed = NULL;
|
||||||
Track_Widget *Track::_belowmouse = 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
|
void
|
||||||
Track::sort ( void )
|
Track::sort ( void )
|
||||||
{
|
{
|
||||||
|
@ -61,7 +80,7 @@ Track::draw ( void )
|
||||||
|
|
||||||
fl_push_clip( x(), y(), w(), h() );
|
fl_push_clip( x(), y(), w(), h() );
|
||||||
|
|
||||||
Fl_Group::draw();
|
draw_box();
|
||||||
|
|
||||||
int X, Y, W, H;
|
int X, Y, W, H;
|
||||||
|
|
||||||
|
@ -332,7 +351,7 @@ Track::handle ( int m )
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return Fl_Group::handle( m );
|
return Fl_Widget::handle( m );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
39
Track.H
39
Track.H
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <FL/Fl_Widget.H>
|
||||||
#include <FL/Fl_Group.H>
|
#include <FL/Fl_Group.H>
|
||||||
#include <FL/Fl.H>
|
#include <FL/Fl.H>
|
||||||
// #include "Region.H"
|
// #include "Region.H"
|
||||||
|
@ -36,7 +37,10 @@ using namespace std;
|
||||||
class Region;
|
class Region;
|
||||||
class Track_Widget;
|
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;
|
char *_name;
|
||||||
|
@ -82,41 +86,14 @@ protected:
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
Track ( int X, int Y, int W, int H ) : Fl_Group( X, Y, W, H )
|
Track ( int X, int Y, int W, int H );
|
||||||
{
|
virtual ~Track ( );
|
||||||
_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();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static Track_Widget *pushed ( void ) { return _pushed; };
|
static Track_Widget *pushed ( void ) { return _pushed; };
|
||||||
static Track_Widget *belowmouse ( void ) { return _belowmouse; };
|
static Track_Widget *belowmouse ( void ) { return _belowmouse; };
|
||||||
|
|
||||||
const char * name ( void ) const { return _name; }
|
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 );
|
void sort ( void );
|
||||||
|
|
||||||
|
|
|
@ -252,6 +252,8 @@ Track_Header::size ( int v )
|
||||||
resize();
|
resize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Track_Header::track( Track * t )
|
Track_Header::track( Track * t )
|
||||||
{
|
{
|
||||||
|
|
|
@ -212,13 +212,17 @@ public:
|
||||||
|
|
||||||
void add ( Track * t )
|
void add ( Track * t )
|
||||||
{
|
{
|
||||||
takes->add( t );
|
takes->insert( *t, 0 );
|
||||||
|
if ( ! t->name() )
|
||||||
|
{
|
||||||
char pat[20];
|
char pat[20];
|
||||||
snprintf( pat, sizeof( pat ), "%d", takes->children() );
|
snprintf( pat, sizeof( pat ), "%d", takes->children() );
|
||||||
t->name( strdup( pat ) );
|
t->name( strdup( pat ) );
|
||||||
take_menu->add( t->name() );
|
take_menu->add( t->name() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void remote ( Track *t )
|
void remote ( Track *t )
|
||||||
{
|
{
|
||||||
takes->remove( t );
|
takes->remove( t );
|
||||||
|
|
|
@ -139,7 +139,7 @@ public:
|
||||||
|
|
||||||
int dispatch ( int m );
|
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 ); }
|
int scroll_x ( void ) const { return timeline->ts_to_x( timeline->xoffset ); }
|
||||||
nframes_t scroll_ts ( void ) const { return timeline->xoffset; }
|
nframes_t scroll_ts ( void ) const { return timeline->xoffset; }
|
||||||
|
|
Loading…
Reference in New Issue