X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ftrackcanvas.C;h=2e21511e31aad2d68ac5bf6d1908607259c78b21;hb=2ba7e9962ea989863e152373e96a09b00a0b4eb8;hp=e9511d2ded9d2ce2bd8db076495483394eb0a384;hpb=6616b3b82fdbc586f5da00bf772e45d8ada3b464;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/trackcanvas.C b/cinelerra-5.1/cinelerra/trackcanvas.C index e9511d2d..2e21511e 100644 --- a/cinelerra-5.1/cinelerra/trackcanvas.C +++ b/cinelerra-5.1/cinelerra/trackcanvas.C @@ -38,6 +38,7 @@ #include "edlsession.h" #include "floatauto.h" #include "floatautos.h" +#include "gwindowgui.h" #include "indexstate.h" #include "intauto.h" #include "intautos.h" @@ -203,25 +204,24 @@ int TrackCanvas::drag_motion(Track **over_track, { int64_t edit_x, edit_y, edit_w, edit_h; edit_dimensions(edit, edit_x, edit_y, edit_w, edit_h); - - if( cursor_x >= edit_x && cursor_x < edit_x + edit_w && - cursor_y >= edit_y && cursor_y < edit_y + edit_h ) { + if( cursor_y < edit_y || cursor_y >= edit_y + edit_h ) continue; + if( cursor_x >= edit_x && cursor_x < edit_x + edit_w ) { *over_edit = edit; break; } if( edit != track->edits->last ) continue; - if( edit->silence() ) continue; if( mwindow->session->current_operation != DRAG_ATRANSITION && mwindow->session->current_operation != DRAG_VTRANSITION ) continue; - if( cursor_x >= edit_x + edit_w && - cursor_y >= edit_y && cursor_y < edit_y + edit_h ) { + if( !edit->silence() ) { // add silence to allow drag transition past last edit // will be deleted by Edits::optimize if not used double length = mwindow->edl->session->default_transition_length; int64_t start = edit->startproject+edit->length; int64_t units = track->to_units(length, 1); track->edits->create_silence(start, start+units); + continue; } + if( cursor_x >= edit_x ) { *over_edit = edit; break; } } for(int i = 0; i < track->plugin_set.total; i++) @@ -254,7 +254,7 @@ int TrackCanvas::drag_motion(Track **over_track, } if( !*over_track ) - *over_track = pane->is_over_patchbay(); + *over_track = pane->over_patchbay(); return 0; } @@ -282,7 +282,7 @@ int TrackCanvas::drag_stop(int *redraw) (cursor_y = get_relative_cursor_y()) >= 0 && cursor_y < get_h() ) over_window = 1; else { - Track *track = pane->is_over_patchbay(); + Track *track = pane->over_patchbay(); if( track && mwindow->session->track_highlighted == track ) over_window = 1; } @@ -1869,24 +1869,8 @@ void TrackCanvas::draw_brender_start() } } -static int auto_colors[AUTOMATION_TOTAL] = -{ - BLUE, - RED, - GREEN, - BLUE, - RED, - GREEN, - BLUE, - WHITE, - 0, - 0, - 0, - WHITE -}; - // The operations which correspond to each automation type -static int auto_operations[AUTOMATION_TOTAL] = +int TrackCanvas::auto_operations[AUTOMATION_TOTAL] = { DRAG_MUTE, DRAG_CAMERA_X, @@ -1991,8 +1975,8 @@ int TrackCanvas::do_keyframes(int cursor_x, auto_keyframe, grouptype); result = do_float_autos(track, autos, - cursor_x, cursor_y, draw, - buttonpress, 0, 0, auto_colors[i], + cursor_x, cursor_y, draw, buttonpress, + 0, 0, GWindowGUI::auto_colors[i], auto_keyframe, grouptype); break; } @@ -2003,8 +1987,8 @@ int TrackCanvas::do_keyframes(int cursor_x, buttonpress, 1, 1, MDGREY, auto_keyframe); result = do_int_autos(track, autos, - cursor_x, cursor_y, draw, - buttonpress, 0, 0, auto_colors[i], + cursor_x, cursor_y, draw, buttonpress, + 0, 0, GWindowGUI::auto_colors[i], auto_keyframe); break; } } @@ -4722,8 +4706,7 @@ int TrackCanvas::button_press_event() switch(mwindow->edl->session->editing_mode) { // Test handles and resource boundaries and highlight a track case EDITING_ARROW: { - if( mwindow->edl->session->auto_conf->transitions && - do_transitions(cursor_x, cursor_y, + if( do_transitions(cursor_x, cursor_y, 1, new_cursor, update_cursor) ) break; if( do_keyframes(cursor_x, cursor_y, @@ -4762,8 +4745,7 @@ int TrackCanvas::button_press_event() mwindow->edl->session->sample_rate; //printf("TrackCanvas::button_press_event %d\n", position); - if(mwindow->edl->session->auto_conf->transitions && - do_transitions(cursor_x, cursor_y, + if( do_transitions(cursor_x, cursor_y, 1, new_cursor, update_cursor)) break; if(do_keyframes(cursor_x, cursor_y, 0, get_buttonpress(), new_cursor, @@ -4785,6 +4767,7 @@ int TrackCanvas::button_press_event() if( do_tracks(cursor_x, cursor_y, 1) ) break; // Highlight selection + if( get_buttonpress() != LEFT_BUTTON ) break; rerender = start_selection(position); mwindow->session->current_operation = SELECT_REGION; update_cursor = 1; @@ -4804,17 +4787,17 @@ int TrackCanvas::button_press_event() if( update_overlay ) { gui->draw_overlays(1); } - - if( update_cursor > 0 ) { + if( update_cursor < 0 ) { +// double_click edit + gui->swindow->update_selection(); + } + if( update_cursor ) { gui->update_timebar(0); gui->hide_cursor(0); gui->show_cursor(1); gui->zoombar->update(); gui->flash_canvas(1); } - else if(update_cursor < 0) { - gui->swindow->update_selection(); - } } return result; }