mask tweaks, focus follows centroid, gradient/colorpicker rework, no hard edges in...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / trackcanvas.C
index 52eab8b9e410068235ed347052389d289887e575..ab9cf977261b71712f96966afafad16136752dd5 100644 (file)
@@ -1888,6 +1888,8 @@ void TrackCanvas::refresh_plugintoggles()
 
 void TrackCanvas::draw_hard_edges()
 {
+       if( !mwindow->edl->session->auto_conf->hard_edges )
+               return;
        int64_t x, y, w, h;
 
        for(Track *track = mwindow->edl->tracks->first; track; track = track->next) {
@@ -3663,16 +3665,20 @@ int TrackCanvas::draw_hairline(Auto *auto_keyframe, int color, int show)
        set_color(color);
        draw_line(ax, 0, ax, get_h());
 
+       char text[BCSTRLEN];
        if( show ) {
-               char text[BCSTRLEN];
                if( auto_keyframe->is_floatauto() ) {
                        FloatAuto *float_auto = (FloatAuto *)auto_keyframe;
                        sprintf(text, "%0.2f", float_auto->get_value());
                }
-               else {
+               else if( auto_keyframe->is_intauto() ) {
                        IntAuto *int_auto = (IntAuto *)auto_keyframe;
                        sprintf(text, "%d", int_auto->value);
                }
+               else
+                       show = 0;
+       }
+       if( show ) {
                int font = MEDIUMFONT;
                int tw = get_text_width(font, text)  + TOOLTIP_MARGIN * 2;
                int th = get_text_height(font, text) + TOOLTIP_MARGIN * 2;
@@ -3880,7 +3886,6 @@ int TrackCanvas::render_handle_frame(EDL *edl, int64_t pos, int mode)
                delete video_cache;
                mwindow->cwindow->gui->lock_window("TrackCanvas::render_handle_frame 0");
                Canvas *canvas = mwindow->cwindow->gui->canvas;
-               canvas->lock_canvas("TrackCanvas::render_handle_frame 1");
                int w = canvas->w, h = canvas->h, w2 = w/2, h2 = h/2;
                int lx = 0, ly = h2/2, rx = w2, ry = h2/2;
                BC_WindowBase *window = canvas->get_canvas();
@@ -3889,7 +3894,6 @@ int TrackCanvas::render_handle_frame(EDL *edl, int64_t pos, int mode)
                window->draw_vframe(&vlt, lx,ly, w2,h2, 0,0,vlt.get_w(),vlt.get_h());
                window->draw_vframe(&vrt, rx,ry, w2,h2, 0,0,vrt.get_w(),vrt.get_h());
                window->flash(1);
-               canvas->unlock_canvas();
                mwindow->cwindow->gui->unlock_window();
                break; }
        case 1:
@@ -4797,7 +4801,7 @@ int TrackCanvas::do_edit_handles(int cursor_x, int cursor_y, int button_press,
                        update_overlay = 1;
                }
        }
-       else if( result < 0 ) {
+       else if( result < 0 && !edit_result->silence() ) {
                mwindow->undo->update_undo_before();
                if( !shift_down() ) {
                        if( handle_result == 0 )