X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fcinelerra%2Fcwindowgui.C;h=19ff101e3f0383a56ba20b8e9df6a2c981922416;hb=2e48b660e37eb5c661264d601211e16cb6cd6e89;hp=3b1d0ac8a05913895fb5aa0d6f78cc6ae38c9052;hpb=11b3a0bebdfdfe15ca2985624244fd1acd978fe4;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/cwindowgui.C b/cinelerra-5.1/cinelerra/cwindowgui.C index 3b1d0ac8..19ff101e 100644 --- a/cinelerra-5.1/cinelerra/cwindowgui.C +++ b/cinelerra-5.1/cinelerra/cwindowgui.C @@ -396,14 +396,18 @@ void CWindowGUI::zoom_canvas(double value, int update_menu) { float x = 0, y = 0; float zoom = !value ? get_auto_zoom() : value; - mwindow->edl->session->cwindow_scrollbars = !value ? 0 : 1; + EDL *edl = mwindow->edl; + edl->session->cwindow_scrollbars = !value ? 0 : 1; if( value ) { - float cx = canvas->get_xscroll() + 0.5f*canvas->w_visible; - float cy = canvas->get_yscroll() + 0.5f*canvas->h_visible; - float output_x = cx, output_y = cy; - canvas->output_to_canvas(mwindow->edl, 0, cx, cy); - x = output_x - cx / zoom; - y = output_y - cy / zoom; + float cx = 0.5f * canvas->w; x = cx; + float cy = 0.5f * canvas->h; y = cy; + canvas->canvas_to_output(edl, 0, x, y); + canvas->update_zoom(0, 0, zoom); + float zoom_x, zoom_y, conformed_w, conformed_h; + canvas->get_zooms(edl, 0, zoom_x, zoom_y, conformed_w, conformed_h); + x -= cx / zoom_x; + y -= cy / zoom_y; + } canvas->update_zoom((int)(x+0.5), (int)(y+0.5), zoom); @@ -484,6 +488,7 @@ int CWindowGUI::keypress_event() lock_window("CWindowGUI::keypress_event 1"); break; case 'x': + if( ctrl_down() || shift_down() || alt_down() ) break; unlock_window(); mwindow->gui->lock_window("CWindowGUI::keypress_event 2"); mwindow->cut(); @@ -561,8 +566,10 @@ int CWindowGUI::keypress_event() } break; - case KEY_F1: cwindow_operation = CWINDOW_PROTECT; break; - case KEY_F2: cwindow_operation = CWINDOW_ZOOM; break; + case KEY_F1: if( shift_down() ) { mwindow->toggle_camera_xyz(); break; } + cwindow_operation = CWINDOW_PROTECT; break; + case KEY_F2: if( shift_down() ) { mwindow->toggle_projector_xyz(); break; } + cwindow_operation = CWINDOW_ZOOM; break; case KEY_F3: cwindow_operation = CWINDOW_MASK; break; case KEY_F4: cwindow_operation = CWINDOW_RULER; break; case KEY_F5: cwindow_operation = CWINDOW_CAMERA; break; @@ -2987,8 +2994,13 @@ int CWindowCanvas::test_bezier(int button_press, { last_center_x = gui->affected_x->get_value(); last_center_y = gui->affected_y->get_value(); - float x = gui->center_x + cursor_x - gui->x_origin; - float y = gui->center_y + cursor_y - gui->y_origin; + float dx = cursor_x - gui->x_origin; + float dy = cursor_y - gui->y_origin; + if(gui->current_operation == CWINDOW_CAMERA ) { + dx = -dx; dy = -dy; + } + float x = gui->center_x + dx; + float y = gui->center_y + dy; gui->affected_x->set_value(x); gui->affected_y->set_value(y); if( !EQUIV(last_center_x, x) || !EQUIV(last_center_y, y) )