X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcwindowgui.C;h=2cfb5da53ffaa2f22a0ccee17721180b2733820e;hp=1439f72a69f0564c8aaaacb92603f4dc60eacf73;hb=9af81a9c7d1206521ffb3d21973a692dceded3cd;hpb=7718f72da6995e7b2b2a59dcc61cc80a2f4bf38f diff --git a/cinelerra-5.1/cinelerra/cwindowgui.C b/cinelerra-5.1/cinelerra/cwindowgui.C index 1439f72a..2cfb5da5 100644 --- a/cinelerra-5.1/cinelerra/cwindowgui.C +++ b/cinelerra-5.1/cinelerra/cwindowgui.C @@ -1782,6 +1782,8 @@ int CWindowCanvas::do_mask(int &redraw, int &rerender, cx += point->x; cy += point->y; } cx /= n; cy /= n; + if( !mask_gui->focused ) + mask_gui->set_focused(0, cx, cy); output_to_canvas(mwindow->edl, 0, cx, cy); float r = bmax(cvs_win->get_w(), cvs_win->get_h()); float d = 0.007*r; @@ -2084,25 +2086,28 @@ int CWindowCanvas::do_mask(int &redraw, int &rerender, case CWINDOW_MASK_ROTATE: rotate = 1; case CWINDOW_MASK_SCALE: { - int button_no = get_buttonpress(); - double scale = button_no == WHEEL_UP ? 1.02 : 0.98; - double theta = button_no == WHEEL_UP ? M_PI/360. : -M_PI/360.; - float st = sin(theta), ct = cos(theta); - float cx = 0, cy = 0; - int n = mask_points.size(); - if( mask_gui && mask_gui->focused ) { + if( !mask_gui || !mask_points.size() ) break; + float cx = gui->x_origin, cy = gui->y_origin; + if( mask_gui->focused ) { cx = atof(mask_gui->focus_x->get_text()); cy = atof(mask_gui->focus_y->get_text()); } - else if( n > 0 ) { + else if( !gui->alt_down() ) { + cx = cy = 0; + int n = mask_points.size(); for( int i=0; ix; cy += point->y; } cx /= n; cy /= n; + mask_gui->set_focused(0, cx, cy); } gui->x_origin = cx; gui->y_origin = cy; + int button_no = get_buttonpress(); + double scale = button_no == WHEEL_UP ? 1.02 : 0.98; + double theta = button_no == WHEEL_UP ? M_PI/360. : -M_PI/360.; + float st = sin(theta), ct = cos(theta); for( int i=0; ix - gui->x_origin; @@ -2203,12 +2208,7 @@ int CWindowCanvas::do_mask_focus() CWindowMaskGUI *mask_gui = (CWindowMaskGUI*) gui->tool_panel->tool_gui; float cx = get_cursor_x(), cy = get_cursor_y(); canvas_to_output(mwindow->edl, 0, cx, cy); - int v = mask_gui->focused ? 0 : 1; - get_canvas()->unlock_window(); - mask_gui->lock_window("CWindowCanvas::do_mask_focus"); - mask_gui->set_focused(v, cx, cy); - mask_gui->unlock_window(); - get_canvas()->lock_window("CWindowCanvas::do_mask_focus"); + mask_gui->set_focused(1, cx, cy); return 1; }