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
This commit is contained in:
@ -201,6 +201,8 @@ struct _GtkFileChooserDialogPrivate
|
|||||||
{
|
{
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
|
|
||||||
|
GtkSizeGroup *buttons;
|
||||||
|
|
||||||
/* for use with GtkFileChooserEmbed */
|
/* for use with GtkFileChooserEmbed */
|
||||||
gboolean response_requested;
|
gboolean response_requested;
|
||||||
gboolean search_setup;
|
gboolean search_setup;
|
||||||
@ -256,6 +258,7 @@ gtk_file_chooser_dialog_class_init (GtkFileChooserDialogClass *class)
|
|||||||
"/org/gtk/libgtk/ui/gtkfilechooserdialog.ui");
|
"/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, 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, 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_file_activated);
|
||||||
gtk_widget_class_bind_template_callback (widget_class, file_chooser_widget_default_size_changed);
|
gtk_widget_class_bind_template_callback (widget_class, file_chooser_widget_default_size_changed);
|
||||||
@ -473,6 +476,15 @@ gtk_file_chooser_dialog_get_property (GObject *object,
|
|||||||
g_object_get_property (G_OBJECT (priv->widget), pspec->name, value);
|
g_object_get_property (G_OBJECT (priv->widget), pspec->name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
static void
|
||||||
setup_search (GtkFileChooserDialog *dialog)
|
setup_search (GtkFileChooserDialog *dialog)
|
||||||
{
|
{
|
||||||
@ -505,6 +517,8 @@ setup_search (GtkFileChooserDialog *dialog)
|
|||||||
g_object_bind_property (button, "active",
|
g_object_bind_property (button, "active",
|
||||||
dialog->priv->widget, "search-mode",
|
dialog->priv->widget, "search-mode",
|
||||||
G_BINDING_BIDIRECTIONAL);
|
G_BINDING_BIDIRECTIONAL);
|
||||||
|
|
||||||
|
gtk_container_forall (GTK_CONTAINER (header), add_button, dialog);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -53,4 +53,7 @@
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</template>
|
</template>
|
||||||
|
<object class="GtkSizeGroup" id="buttons">
|
||||||
|
<property name="mode">vertical</property>
|
||||||
|
</object>
|
||||||
</interface>
|
</interface>
|
||||||
|
|||||||
Reference in New Issue
Block a user