projects
/
synfig.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix "zoom to fit" so that it centers the fitted canvas on the screen, and always...
[synfig.git]
/
synfig-studio
/
trunk
/
src
/
gtkmm
/
workarea.cpp
diff --git
a/synfig-studio/trunk/src/gtkmm/workarea.cpp
b/synfig-studio/trunk/src/gtkmm/workarea.cpp
index
57d079d
..
97c0a6d
100644
(file)
--- a/
synfig-studio/trunk/src/gtkmm/workarea.cpp
+++ b/
synfig-studio/trunk/src/gtkmm/workarea.cpp
@@
-2133,8
+2133,6
@@
WorkArea::refresh(GdkEventExpose*event)
drawing_frame->unset_bg(Gtk::STATE_NORMAL);
#endif
drawing_frame->unset_bg(Gtk::STATE_NORMAL);
#endif
- previous_focus=get_focus_point();
-
return true;
}
return true;
}
@@
-2580,9
+2578,15
@@
void
studio::WorkArea::zoom_fit()
{
float new_zoom(min(drawing_area->get_width() * zoom / w, drawing_area->get_height() * zoom / h));
studio::WorkArea::zoom_fit()
{
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);
+ if (zoom / new_zoom > 0.995 && new_zoom / zoom > 0.995)
+ {
+ set_zoom(prev_zoom);
+ return set_focus_point(previous_focus);
+ }
+ previous_focus = get_focus_point();
prev_zoom = zoom;
set_zoom(new_zoom);
prev_zoom = zoom;
set_zoom(new_zoom);
+ set_focus_point(Point(0,0));
}
void
}
void