X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fworkarea.cpp;h=57d079ddbf68fe98d4c994fe324688933a639a5f;hb=e3753a385b776c4713b93fa8426dc8c5af291c8a;hp=af6f2f3300f5bc6852fb80c51109c2cd19b24a13;hpb=c54f625fc791d3fec98dfbbf05ebe018f1dfeec0;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/workarea.cpp b/synfig-studio/trunk/src/gtkmm/workarea.cpp index af6f2f3..57d079d 100644 --- a/synfig-studio/trunk/src/gtkmm/workarea.cpp +++ b/synfig-studio/trunk/src/gtkmm/workarea.cpp @@ -828,18 +828,22 @@ WorkArea::~WorkArea() render_idle_func_id=0; } +#ifdef SINGLE_THREADED bool WorkArea::get_updating()const { return App::single_threaded && async_renderer && async_renderer->updating; } +#endif +#ifdef SINGLE_THREADED void WorkArea::stop_updating(bool cancel) { async_renderer->stop(); if (cancel) canceled_=true; } +#endif void WorkArea::save_meta_data() @@ -2216,12 +2220,14 @@ public: bool studio::WorkArea::async_update_preview() { +#ifdef SINGLE_THREADED if (get_updating()) { stop_updating(); queue_render_preview(); return false; } +#endif async_renderer=0; @@ -2573,20 +2579,18 @@ studio::WorkArea::zoom_out() void studio::WorkArea::zoom_fit() { - // This really doesn't zoom to fit. Bug. - zoom_norm(); + float new_zoom(min(drawing_area->get_width() * zoom / w, drawing_area->get_height() * zoom / h)); + if (zoom == new_zoom) return set_zoom(prev_zoom); + prev_zoom = zoom; + set_zoom(new_zoom); } void studio::WorkArea::zoom_norm() { - if(zoom==1.0) - set_zoom(prev_zoom); - else - { - prev_zoom=zoom; - set_zoom(1.0f); - } + if (zoom == 1.0) return set_zoom(prev_zoom); + prev_zoom = zoom; + set_zoom(1.0f); } gboolean