|
|
@@ -1081,7 +1081,8 @@ Track::handle ( int m ) |
|
|
|
case FL_DND_DRAG: |
|
|
|
case FL_DND_RELEASE: |
|
|
|
case FL_PASTE: |
|
|
|
if ( Fl::event_x() > Track::width() ) |
|
|
|
if ( dragging != ((Track_Header*)child(0))->output_connector_handle && |
|
|
|
Fl::event_x() > Track::width() ) |
|
|
|
return sequence()->handle(m); |
|
|
|
default: |
|
|
|
break; |
|
|
@@ -1122,6 +1123,7 @@ Track::handle ( int m ) |
|
|
|
if ( Fl::event_button1() && Fl::event_inside( ((Track_Header*)child(0))->color_box ) ) |
|
|
|
{ |
|
|
|
dragging = this; |
|
|
|
fl_cursor( FL_CURSOR_MOVE ); |
|
|
|
return 1; |
|
|
|
} |
|
|
|
if ( Fl::event_button1() && Fl::event_inside( ((Track_Header*)child(0))->output_connector_handle ) ) |
|
|
@@ -1144,29 +1146,46 @@ Track::handle ( int m ) |
|
|
|
case FL_ENTER: |
|
|
|
case FL_LEAVE: |
|
|
|
case FL_MOVE: |
|
|
|
if ( Fl::event_x() >= Track::width() ) |
|
|
|
|
|
|
|
if ( dragging != ((Track_Header*)child(0))->output_connector_handle && |
|
|
|
Fl::event_x() >= Track::width() ) |
|
|
|
{ |
|
|
|
return Fl_Group::handle(m); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
if ( Fl::event_inside( ((Track_Header*)child(0))->output_connector_handle ) || |
|
|
|
Fl::event_inside( ((Track_Header*)child(0))->input_connector_handle ) || |
|
|
|
Fl::event_inside( ((Track_Header*)child(0))->color_box ) ) |
|
|
|
fl_cursor( FL_CURSOR_HAND ); |
|
|
|
} |
|
|
|
return 1; |
|
|
|
case FL_DND_ENTER: |
|
|
|
return 1; |
|
|
|
case FL_DND_LEAVE: |
|
|
|
|
|
|
|
if ( ! Fl::event_inside(this) && this == receptive_to_drop ) |
|
|
|
{ |
|
|
|
/* if ( ! Fl::event_inside(this) )// && this == receptive_to_drop ) */ |
|
|
|
/* { */ |
|
|
|
receptive_to_drop = 0; |
|
|
|
redraw(); |
|
|
|
Fl::selection_owner(0); |
|
|
|
} |
|
|
|
/* } */ |
|
|
|
return 1; |
|
|
|
case FL_RELEASE: |
|
|
|
if ( dragging == this ) |
|
|
|
{ |
|
|
|
dragging = NULL; |
|
|
|
timeline->insert_track( this, timeline->event_inside() ); |
|
|
|
return 1; |
|
|
|
fl_cursor( FL_CURSOR_DEFAULT ); |
|
|
|
return 1; |
|
|
|
} |
|
|
|
else if ( dragging == ((Track_Header*)child(0))->output_connector_handle ) |
|
|
|
{ |
|
|
|
dragging = NULL; |
|
|
|
fl_cursor( FL_CURSOR_DEFAULT ); |
|
|
|
return 1; |
|
|
|
} |
|
|
|
|
|
|
|
return Fl_Group::handle( m ); |
|
|
|
break; |
|
|
|
case FL_DND_RELEASE: |
|
|
@@ -1253,6 +1272,9 @@ Track::handle ( int m ) |
|
|
|
} |
|
|
|
case FL_DRAG: |
|
|
|
{ |
|
|
|
if ( Fl::event_is_click() ) |
|
|
|
return 1; |
|
|
|
|
|
|
|
if ( this != Fl::selection_owner() && |
|
|
|
Fl::event_inside( ((Track_Header*)child(0))->output_connector_handle ) ) |
|
|
|
{ |
|
|
@@ -1262,8 +1284,9 @@ Track::handle ( int m ) |
|
|
|
for ( unsigned int i = 0; i < output.size(); ++i ) |
|
|
|
{ |
|
|
|
char *s2; |
|
|
|
asprintf(&s2, "jack.port://%s:%s\r\n", instance_name, output[i].name() ); |
|
|
|
|
|
|
|
asprintf(&s2, "jack.port://%s\r\n", |
|
|
|
output[i].jack_name() ); |
|
|
|
|
|
|
|
s = (char*)realloc( s, strlen( s ) + strlen( s2 ) + 1 ); |
|
|
|
strcat( s, s2 ); |
|
|
|
|
|
|
@@ -1275,14 +1298,12 @@ Track::handle ( int m ) |
|
|
|
|
|
|
|
free( s ); |
|
|
|
|
|
|
|
dragging = ((Track_Header*)child(0))->output_connector_handle; |
|
|
|
|
|
|
|
Fl::dnd(); |
|
|
|
|
|
|
|
return 1; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
return 1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return 1; |
|
|
|
} |
|
|
|
default: |
|
|
|
return Fl_Group::handle( m ); |
|
|
|