diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt index 9da9adaebd..affd74313e 100644 --- a/docs/reference/gtk/gtk3-sections.txt +++ b/docs/reference/gtk/gtk3-sections.txt @@ -636,6 +636,7 @@ GtkButton gtk_button_new gtk_button_new_with_label gtk_button_new_with_mnemonic +gtk_button_new_from_icon_name gtk_button_new_from_stock gtk_button_pressed gtk_button_released diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c index 7396cb8add..3074e7e1eb 100644 --- a/gtk/gtkbutton.c +++ b/gtk/gtkbutton.c @@ -1297,6 +1297,42 @@ gtk_button_new_with_label (const gchar *label) return g_object_new (GTK_TYPE_BUTTON, "label", label, NULL); } +/** + * gtk_button_new_from_icon_name: + * @icon_name: an icon name + * @size: (type int): an icon size + * + * Creates a new #GtkButton containing an icon from the current icon theme. + * + * If the icon name isn't known, a "broken image" icon will be + * displayed instead. If the current icon theme is changed, the icon + * will be updated appropriately. + * + * This function is a convenience wrapper around gtk_button_new() and + * gtk_button_set_image(). + * + * Returns: a new #GtkButton displaying the themed icon + * + * Since: 3.10 + **/ +GtkWidget* +gtk_button_new_from_icon_name (const gchar *icon_name, + GtkIconSize size) +{ + GtkStyleContext *context; + GtkWidget *button; + GtkWidget *image; + + image = gtk_image_new_from_icon_name (icon_name, size); + button = g_object_new (GTK_TYPE_BUTTON, + "image", image, + NULL); + context = gtk_widget_get_style_context (button); + gtk_style_context_add_class (context, "image-button")); + + return button; +} + /** * gtk_button_new_from_stock: * @stock_id: the name of the stock item diff --git a/gtk/gtkbutton.h b/gtk/gtkbutton.h index 7c31994251..18379889fa 100644 --- a/gtk/gtkbutton.h +++ b/gtk/gtkbutton.h @@ -80,6 +80,9 @@ GDK_AVAILABLE_IN_ALL GtkWidget* gtk_button_new (void); GDK_AVAILABLE_IN_ALL GtkWidget* gtk_button_new_with_label (const gchar *label); +GDK_AVAILABLE_IN_3_10 +GtkWidget* gtk_button_new_from_icon_name (const gchar *icon_name, + GtkIconSize size); GDK_DEPRECATED_IN_3_10_FOR(gtk_button_new_with_label) GtkWidget* gtk_button_new_from_stock (const gchar *stock_id); GDK_AVAILABLE_IN_ALL