}
}
-static GtkWidget * create_zoom_menu_all_levels ()
+/**
+ * @mpp: The initial zoom level
+ */
+static GtkWidget *create_zoom_menu_all_levels ( gdouble mpp )
{
GtkWidget *menu = gtk_menu_new ();
char *itemLabels[] = { "0.25", "0.5", "1", "2", "4", "8", "16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192", "16384", "32768" };
g_object_set_data (G_OBJECT (item), "position", GINT_TO_POINTER(i));
}
+ gint active = 2 + round ( log (mpp) / log (2) );
+ // Ensure value derived from mpp is in bounds of the menu
+ if ( active >= G_N_ELEMENTS(itemLabels) )
+ active = G_N_ELEMENTS(itemLabels) - 1;
+ if ( active < 0 )
+ active = 0;
+ gtk_menu_set_active ( GTK_MENU(menu), active );
+
return menu;
}
gtk_toolbar_set_style (vw->toolbar, GTK_TOOLBAR_ICONS);
GtkWidget * zoom_levels = gtk_ui_manager_get_widget (vw->uim, "/MainMenu/View/SetZoom");
- GtkWidget * zoom_levels_menu = create_zoom_menu_all_levels ();
+ GtkWidget * zoom_levels_menu = create_zoom_menu_all_levels ( vik_viewport_get_zoom(vw->viking_vvp) );
gtk_menu_item_set_submenu (GTK_MENU_ITEM (zoom_levels), zoom_levels_menu);
g_signal_connect ( G_OBJECT(zoom_levels_menu), "selection-done", G_CALLBACK(zoom_changed), vw);
g_signal_connect_swapped ( G_OBJECT(vw->viking_vs), "clicked", G_CALLBACK(zoom_popup_handler), zoom_levels_menu );