tweak zoom/fullscr to remember cwdw scale after fullscr
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / zwindowgui.C
index 1ffa772d77e2cb0c31a0b6ba8def317abd071c80..62bcb93e17e58d76747ced7436a3b137089feb7f 100644 (file)
@@ -96,26 +96,22 @@ int ZWindowGUI::keypress_event()
                close_event();
                return 1;
        }
-       unlock_window();
        int result = 1;
        switch( key ) {
        case 'f':
-               if( canvas->get_fullscreen() )
-                       canvas->stop_fullscreen();
-               else
-                       canvas->start_fullscreen();
+               canvas->set_fullscreen(canvas->get_fullscreen() ? 0 : 1);
                break;
        case ESC:
-               if( canvas->get_fullscreen() )
-                       canvas->stop_fullscreen();
+               canvas->set_fullscreen(0);
                break;
        default:
+               unlock_window();
                mwindow->gui->lock_window("ZWindowGUI::keypress_event");
                result = mwindow->gui->mbuttons->transport->do_keypress(key);
                mwindow->gui->unlock_window();
+               lock_window("ZWindowGUI::keypress_event 1");
        }
 
-       lock_window("ZWindowGUI::keypress_event 1");
        return result;
 }
 
@@ -248,3 +244,17 @@ void ZWindowCanvas::draw_refresh(int flush)
                cvs->flash(flush);
 }
 
+float ZWindowCanvas::get_auto_zoom()
+{
+       EDL *edl = gui->zwindow->edl;
+       if( !edl ) edl = mwindow->edl;
+       float conformed_w, conformed_h;
+       edl->calculate_conformed_dimensions(0, conformed_w, conformed_h);
+       BC_WindowBase *window = get_canvas();
+       int cw = window ? window->get_w() : w;
+       int ch = window ? window->get_h() : h;
+       float zoom_x = cw / conformed_w;
+       float zoom_y = ch / conformed_h;
+       return zoom_x < zoom_y ? zoom_x : zoom_y;
+}
+