diff --git a/Timeline/Audio_Sequence.H b/Timeline/Audio_Sequence.H index b1d77a3..bda3770 100644 --- a/Timeline/Audio_Sequence.H +++ b/Timeline/Audio_Sequence.H @@ -71,6 +71,8 @@ public: LOG_CREATE_FUNC( Audio_Sequence ); + Fl_Cursor cursor ( void ) const { return FL_CURSOR_DEFAULT; } + Audio_Sequence ( Track *track ) : Sequence( 0, 0, 0, 0, track ) { diff --git a/Timeline/Control_Sequence.C b/Timeline/Control_Sequence.C index 3417154..0a29eb0 100644 --- a/Timeline/Control_Sequence.C +++ b/Timeline/Control_Sequence.C @@ -247,6 +247,7 @@ Control_Sequence::handle ( int m ) { case FL_ENTER: _highlighted = true; + fl_cursor( cursor() ); redraw(); return 1; case FL_LEAVE: diff --git a/Timeline/Control_Sequence.H b/Timeline/Control_Sequence.H index 19dd428..e514098 100644 --- a/Timeline/Control_Sequence.H +++ b/Timeline/Control_Sequence.H @@ -66,6 +66,8 @@ public: Control_Sequence ( Track * ); ~Control_Sequence ( ); + Fl_Cursor cursor ( void ) const { return FL_CURSOR_CROSS; } + // const char *class_name ( void ) { return "Control_Sequence"; } void draw ( void ); diff --git a/Timeline/Ruler_Sequence.H b/Timeline/Ruler_Sequence.H index 693cc57..87211b4 100644 --- a/Timeline/Ruler_Sequence.H +++ b/Timeline/Ruler_Sequence.H @@ -28,6 +28,8 @@ class Ruler_Sequence : public Sequence public: + Fl_Cursor cursor ( void ) const { return FL_CURSOR_INSERT; } + Ruler_Sequence ( int X, int Y, int W, int H ) : Sequence ( X, Y, W, H ) { // box( FL_UP_BOX ); diff --git a/Timeline/Sequence.C b/Timeline/Sequence.C index 6637985..8b6a23e 100644 --- a/Timeline/Sequence.C +++ b/Timeline/Sequence.C @@ -257,6 +257,8 @@ Sequence::handle ( int m ) case FL_FOCUS: case FL_UNFOCUS: case FL_LEAVE: + fl_cursor( FL_CURSOR_DEFAULT ); + return 1; case FL_DND_DRAG: return 1; case FL_ENTER: @@ -274,6 +276,10 @@ Sequence::handle ( int m ) else fl_cursor( (Fl_Cursor)1 ); } + else + fl_cursor( cursor() ); + + return 1; case FL_DND_ENTER: case FL_DND_LEAVE: case FL_DND_RELEASE: diff --git a/Timeline/Sequence.H b/Timeline/Sequence.H index e32f4c1..33d6f48 100644 --- a/Timeline/Sequence.H +++ b/Timeline/Sequence.H @@ -96,6 +96,9 @@ public: virtual ~Sequence ( ); + /* override this to provide cursor */ + virtual Fl_Cursor cursor ( void ) const = 0; + nframes_t x_to_offset ( int X ); const char * name ( void ) const { return _name; } diff --git a/Timeline/Sequence_Widget.C b/Timeline/Sequence_Widget.C index 15e41d7..2a7d73e 100644 --- a/Timeline/Sequence_Widget.C +++ b/Timeline/Sequence_Widget.C @@ -151,7 +151,7 @@ Sequence_Widget::handle ( int m ) fl_cursor( FL_CURSOR_HAND ); return 1; case FL_LEAVE: - fl_cursor( FL_CURSOR_DEFAULT ); + fl_cursor( _track->cursor() ); return 1; case FL_PUSH: { @@ -203,6 +203,7 @@ Sequence_Widget::handle ( int m ) } else _r->offset = 0; + } if ( X >= _track->x() + _track->w() || diff --git a/Timeline/Tempo_Sequence.H b/Timeline/Tempo_Sequence.H index cc97587..894a7cc 100644 --- a/Timeline/Tempo_Sequence.H +++ b/Timeline/Tempo_Sequence.H @@ -29,6 +29,8 @@ class Tempo_Sequence : public Sequence public: + Fl_Cursor cursor ( void ) const { return FL_CURSOR_DEFAULT; } + Tempo_Sequence ( int X, int Y, int W, int H ) : Sequence ( X, Y, W, H ) { // box( FL_DOWN_BOX ); diff --git a/Timeline/Time_Sequence.H b/Timeline/Time_Sequence.H index 57409d1..52f96b4 100644 --- a/Timeline/Time_Sequence.H +++ b/Timeline/Time_Sequence.H @@ -30,6 +30,8 @@ class Time_Sequence : public Sequence public: + Fl_Cursor cursor ( void ) const { return FL_CURSOR_DEFAULT; } + Time_Sequence ( int X, int Y, int W, int H ) : Sequence ( X, Y, W, H ) { // box( FL_UP_BOX );