Mercurial > geeqie
diff src/layout_util.c @ 489:3809ffa3567b
Save state and width of exif, info and sort panels to rc file.
Width is restored only if save windows dimensions is set.
author | zas_ |
---|---|
date | Tue, 22 Apr 2008 22:44:10 +0000 |
parents | 75b7154e6435 |
children | a33badd85f16 |
line wrap: on
line diff
--- a/src/layout_util.c Tue Apr 22 19:26:07 2008 +0000 +++ b/src/layout_util.c Tue Apr 22 22:44:10 2008 +0000 @@ -1623,8 +1623,6 @@ *----------------------------------------------------------------------------- */ -#define SIDEBAR_WIDTH 288 - static void layout_bar_info_destroyed(GtkWidget *widget, gpointer data) { LayoutWindow *lw = data; @@ -1646,6 +1644,15 @@ return layout_selection_list(lw); } +static void layout_bar_info_sized(GtkWidget *widget, GtkAllocation *allocation, gpointer data) +{ + LayoutWindow *lw = data; + + if (!lw->bar_info) return; + + options->panels.info.width = lw->bar_info_width = allocation->width; +} + static void layout_bar_info_new(LayoutWindow *lw) { if (!lw->utility_box) return; @@ -1653,10 +1660,13 @@ lw->bar_info = bar_info_new(layout_image_get_fd(lw), FALSE, lw->utility_box); bar_info_set_selection_func(lw->bar_info, layout_bar_info_list_cb, lw); bar_info_selection(lw->bar_info, layout_selection_count(lw, NULL) - 1); - bar_info_size_request(lw->bar_info, SIDEBAR_WIDTH * 3 / 4); g_signal_connect(G_OBJECT(lw->bar_info), "destroy", G_CALLBACK(layout_bar_info_destroyed), lw); - lw->bar_info_enabled = TRUE; + g_signal_connect(G_OBJECT(lw->bar_info), "size_allocate", + G_CALLBACK(layout_bar_info_sized), lw); + + options->panels.info.enabled = lw->bar_info_enabled = TRUE; + gtk_widget_set_size_request(lw->bar_info, lw->bar_info_width, -1); gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->bar_info, FALSE, FALSE, 0); gtk_widget_show(lw->bar_info); @@ -1669,7 +1679,7 @@ bar_info_close(lw->bar_info); lw->bar_info = NULL; } - lw->bar_info_enabled = FALSE; + options->panels.info.enabled = lw->bar_info_enabled = FALSE; } void layout_bar_info_toggle(LayoutWindow *lw) @@ -1727,10 +1737,9 @@ { LayoutWindow *lw = data; - if (lw->bar_exif) - { - lw->bar_exif_size = allocation->width; - } + if (!lw->bar_exif) return; + + options->panels.exif.width = lw->bar_exif_width = allocation->width; } static void layout_bar_exif_new(LayoutWindow *lw) @@ -1743,10 +1752,10 @@ G_CALLBACK(layout_bar_exif_destroyed), lw); g_signal_connect(G_OBJECT(lw->bar_exif), "size_allocate", G_CALLBACK(layout_bar_exif_sized), lw); - lw->bar_exif_enabled = TRUE; - if (lw->bar_exif_size < 1) lw->bar_exif_size = SIDEBAR_WIDTH; - gtk_widget_set_size_request(lw->bar_exif, lw->bar_exif_size, -1); + options->panels.exif.enabled = lw->bar_exif_enabled = TRUE; + gtk_widget_set_size_request(lw->bar_exif, lw->bar_exif_width, -1); + gtk_box_pack_start(GTK_BOX(lw->utility_box), lw->bar_exif, FALSE, FALSE, 0); if (lw->bar_info) gtk_box_reorder_child(GTK_BOX(lw->utility_box), lw->bar_exif, 1); gtk_widget_show(lw->bar_exif); @@ -1759,7 +1768,7 @@ bar_exif_close(lw->bar_exif); lw->bar_exif = NULL; } - lw->bar_exif_enabled = FALSE; + options->panels.exif.enabled = lw->bar_exif_enabled = FALSE; } void layout_bar_exif_toggle(LayoutWindow *lw) @@ -1803,7 +1812,7 @@ lw->bar_sort = bar_sort_new(lw); g_signal_connect(G_OBJECT(lw->bar_sort), "destroy", G_CALLBACK(layout_bar_sort_destroyed), lw); - lw->bar_sort_enabled = TRUE; + options->panels.sort.enabled = lw->bar_sort_enabled = TRUE; gtk_box_pack_end(GTK_BOX(lw->utility_box), lw->bar_sort, FALSE, FALSE, 0); gtk_widget_show(lw->bar_sort); @@ -1816,7 +1825,7 @@ bar_sort_close(lw->bar_sort); lw->bar_sort = NULL; } - lw->bar_sort_enabled = FALSE; + options->panels.sort.enabled = lw->bar_sort_enabled = FALSE; } void layout_bar_sort_toggle(LayoutWindow *lw)