- float x = canvas->w / 2.0;
- float y = canvas->h / 2.0;
- canvas->canvas_to_output(mwindow->edl,
- 0,
- x,
- y);
- x -= canvas->w_visible / 2 * old_zoom / new_zoom;
- y -= canvas->h_visible / 2 * old_zoom / new_zoom;
- if(update_menu)
- {
- if(do_auto)
- {
- zoom_panel->update(auto_zoom);
+ edl->session->cwindow_scrollbars = do_auto ? 0 : 1;
+ if( !do_auto && canvas->scrollbars_exist() ) {
+ float z = 1 - old_zoom / new_zoom;
+ x = canvas->get_xscroll() + 0.5f*canvas->w_visible * z;
+ y = canvas->get_yscroll() + 0.5f*canvas->h_visible * z;
+ }
+
+ if( update_menu ) {
+ if( !do_auto ) {
+ int frac = new_zoom >= 1.0f ? 1 :
+ new_zoom >= 0.1f ? 2 :
+ new_zoom >= .01f ? 3 : 4;
+ char string[BCSTRLEN];
+ sprintf(string,"x %.*f", frac, new_zoom);
+ zoom_panel->update(string);