alt transport keys, snap editing, grab focus, inv hilight clr, subtitle fix
[goodguy/history.git] / cinelerra-5.1 / cinelerra / trackcanvas.C
index 9f596c26ae7c2cf91457bf561118b902fe72ebfd..a0ba9f27a4c406391329bb31d50d85c5719ef855 100644 (file)
@@ -1277,7 +1277,7 @@ void TrackCanvas::draw_highlight_rectangle(int x, int y, int w, int h)
        h = MIN(h, get_h() + 20);
        if(w > 0 && h > 0)
        {
-               set_color(WHITE);
+               set_color(mwindow->preferences->highlight_inverse);
                set_inverse();
                //draw_rectangle(x, y, w, h);
                draw_rectangle(x + 1, y + 1, w - 2, h - 2);
@@ -1339,7 +1339,7 @@ void TrackCanvas::draw_highlight_insertion(int x, int y, int w, int h)
        }
        w = MIN(w, get_w() + 20);
        h = MIN(h, get_h() + 20);
-       set_color(WHITE);
+       set_color(mwindow->preferences->highlight_inverse);
        set_inverse();
        draw_rectangle(x, y, w, h);
        draw_rectangle(x + 1, y + 1, w - 2, h - 2);
@@ -1854,7 +1854,9 @@ void TrackCanvas::draw_loop_points()
 
 void TrackCanvas::draw_brender_range()
 {
-       if(mwindow->preferences->use_brender)
+       if( !mwindow->preferences->use_brender || !mwindow->brender_active ) return;
+       if( mwindow->edl->session->brender_start >= mwindow->edl->session->brender_end ) return;
+       if( mwindow->edl->session->brender_end > 0 )
        {
                int64_t x1 = Units::round(mwindow->edl->session->brender_start *
                        mwindow->edl->session->sample_rate /
@@ -4656,6 +4658,7 @@ int TrackCanvas::button_press_event()
        int result = 0;
        int cursor_x, cursor_y;
        int new_cursor;
+       double start_position = mwindow->edl->local_session->get_selectionstart(1);
 
        cursor_x = get_cursor_x();
        cursor_y = get_cursor_y();
@@ -4674,7 +4677,8 @@ int TrackCanvas::button_press_event()
                        activate();
                }
 
-               if( get_buttonpress() == LEFT_BUTTON ) {
+               if( get_buttonpress() == LEFT_BUTTON &&
+                   gui->mbuttons->transport->engine->command->command != STOP ) {
                        gui->unlock_window();
                        gui->mbuttons->transport->handle_transport(STOP, 1, 0, 0);
                        gui->lock_window("TrackCanvas::button_press_event");
@@ -4811,13 +4815,30 @@ int TrackCanvas::button_press_event()
                        gui->flash_canvas(1);
                }
        }
+// if snapping to selection point
+       if( gui->ctrl_down() && gui->alt_down() ) {
+               switch( mwindow->session->current_operation ) {
+               case DRAG_EDITHANDLE1:
+                       mwindow->session->drag_position = start_position;
+                       mwindow->session->current_operation = NO_OPERATION;
+                       drag_scroll = 0;
+                       end_edithandle_selection();
+                       break;
+               case DRAG_PLUGINHANDLE1:
+                       mwindow->session->drag_position = start_position;
+                       mwindow->session->current_operation = NO_OPERATION;
+                       drag_scroll = 0;
+                       end_pluginhandle_selection();
+                       break;
+               }
+       }
        return result;
 }
 
 int TrackCanvas::start_selection(double position)
 {
        int rerender = 0;
-       position = mwindow->edl->align_to_frame(position, 0);
+       position = mwindow->edl->align_to_frame(position, 1);
 
 
 // Extend a border