# HG changeset patch # User nadvornik # Date 1235943318 0 # Node ID ff3cd67235af791f38ea74f07336fc4d619a1d5e # Parent 249bf204004af1ceaae61dcd2946befd17e3a007 make the exif pane grow-only - this reduces sidebar jumping diff -r 249bf204004a -r ff3cd67235af src/bar_exif.c --- a/src/bar_exif.c Sun Mar 01 21:06:55 2009 +0000 +++ b/src/bar_exif.c Sun Mar 01 21:35:18 2009 +0000 @@ -26,6 +26,7 @@ #include +#define MIN_HEIGHT 25 /* *------------------------------------------------------------------- * EXIF widget @@ -54,6 +55,8 @@ GtkWidget *widget; GtkSizeGroup *size_group; + gint min_height; + FileData *fd; }; @@ -257,6 +260,21 @@ g_free(ped); } +static void bar_pane_exif_size_request(GtkWidget *pane, GtkRequisition *requisition, gpointer data) +{ + PaneExifData *ped = data; + if (requisition->height < ped->min_height) + { + requisition->height = ped->min_height; + } +} + +static void bar_pane_exif_size_allocate(GtkWidget *pane, GtkAllocation *alloc, gpointer data) +{ + PaneExifData *ped = data; + ped->min_height = alloc->height; +} + GtkWidget *bar_pane_exif_new(const gchar *title, gboolean expanded, gboolean populate) { PaneExifData *ped; @@ -271,10 +289,14 @@ ped->size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); ped->vbox = gtk_vbox_new(FALSE, PREF_PAD_GAP); ped->widget = ped->vbox; + ped->min_height = MIN_HEIGHT; g_object_set_data(G_OBJECT(ped->widget), "pane_data", ped); g_signal_connect_after(G_OBJECT(ped->widget), "destroy", G_CALLBACK(bar_pane_exif_destroy), ped); - + g_signal_connect(G_OBJECT(ped->widget), "size-request", + G_CALLBACK(bar_pane_exif_size_request), ped); + g_signal_connect(G_OBJECT(ped->widget), "size-allocate", + G_CALLBACK(bar_pane_exif_size_allocate), ped); if (populate) {