From 963d59c44a22923bf0e32f5bc55710ff8eed7c5b Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 5 Oct 2010 18:24:10 +0200 Subject: e-map: Zoom out smoothly, too --- widgets/misc/e-map.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'widgets/misc') diff --git a/widgets/misc/e-map.c b/widgets/misc/e-map.c index 102e728833..288bc220eb 100644 --- a/widgets/misc/e-map.c +++ b/widgets/misc/e-map.c @@ -842,6 +842,8 @@ e_map_zoom_to_location (EMap *map, gdouble longitude, gdouble latitude) e_map_set_zoom (map, E_MAP_ZOOMED_IN); center_at (map, longitude, latitude); + /* need to reget location, centering might have clipped it */ + e_map_get_current_location (map, &longitude, &latitude); e_map_tween_new (map, 150, @@ -853,14 +855,25 @@ e_map_zoom_to_location (EMap *map, gdouble longitude, gdouble latitude) void e_map_zoom_out (EMap *map) { - double longitude, latitude; + double longitude, latitude, actual_longitude, actual_latitude; + double prevzoom; g_return_if_fail (map); g_return_if_fail (gtk_widget_get_realized (GTK_WIDGET (map))); e_map_get_current_location (map, &longitude, &latitude); + prevzoom = e_map_get_magnification (map); e_map_set_zoom (map, E_MAP_ZOOMED_OUT); center_at (map, longitude, latitude); + + /* need to reget location, centering might have clipped it */ + e_map_get_current_location (map, &actual_longitude, &actual_latitude); + + e_map_tween_new (map, + 150, + longitude - actual_longitude, + latitude - actual_latitude, + prevzoom / e_map_get_magnification (map)); } void -- cgit v1.2.3