[gtk+] file chooser dialog: Prevent uneven button heights



commit f96f69996a86d4d37ad4b9b697ded9a5941d6fa0
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Feb 26 21:15:19 2015 -0500

    file chooser dialog: Prevent uneven button heights
    
    The height of the text buttons depends on the font height,
    whereas the search button has a fixed-size icon in it...
    Prevent unevent heights by putting them all in a size group.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=745263

 gtk/gtkfilechooserdialog.c     |   14 ++++++++++++++
 gtk/ui/gtkfilechooserdialog.ui |    3 +++
 2 files changed, 17 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkfilechooserdialog.c b/gtk/gtkfilechooserdialog.c
index 169e6a1..29fbb48 100644
--- a/gtk/gtkfilechooserdialog.c
+++ b/gtk/gtkfilechooserdialog.c
@@ -201,6 +201,8 @@ struct _GtkFileChooserDialogPrivate
 {
   GtkWidget *widget;
 
+  GtkSizeGroup *buttons;
+
   /* for use with GtkFileChooserEmbed */
   gboolean response_requested;
   gboolean search_setup;
@@ -256,6 +258,7 @@ gtk_file_chooser_dialog_class_init (GtkFileChooserDialogClass *class)
                                               "/org/gtk/libgtk/ui/gtkfilechooserdialog.ui");
 
   gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserDialog, widget);
+  gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserDialog, buttons);
   gtk_widget_class_bind_template_callback (widget_class, response_cb);
   gtk_widget_class_bind_template_callback (widget_class, file_chooser_widget_file_activated);
   gtk_widget_class_bind_template_callback (widget_class, file_chooser_widget_default_size_changed);
@@ -474,6 +477,15 @@ gtk_file_chooser_dialog_get_property (GObject         *object,
 }
 
 static void
+add_button (GtkWidget *button, gpointer data)
+{
+  GtkFileChooserDialog *dialog = data;
+
+  if (GTK_IS_BUTTON (button))
+    gtk_size_group_add_widget (dialog->priv->buttons, button);
+}
+
+static void
 setup_search (GtkFileChooserDialog *dialog)
 {
   gboolean use_header;
@@ -505,6 +517,8 @@ setup_search (GtkFileChooserDialog *dialog)
       g_object_bind_property (button, "active",
                               dialog->priv->widget, "search-mode",
                               G_BINDING_BIDIRECTIONAL);
+
+      gtk_container_forall (GTK_CONTAINER (header), add_button, dialog);
     }
 }
 
diff --git a/gtk/ui/gtkfilechooserdialog.ui b/gtk/ui/gtkfilechooserdialog.ui
index fa0a368..281bd6f 100644
--- a/gtk/ui/gtkfilechooserdialog.ui
+++ b/gtk/ui/gtkfilechooserdialog.ui
@@ -53,4 +53,7 @@
       </object>
     </child>
   </template>
+  <object class="GtkSizeGroup" id="buttons">
+    <property name="mode">vertical</property>
+  </object>
 </interface>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]