From: Matthias Clasen Date: Wed, 19 Oct 2022 02:35:28 +0000 (-0400) Subject: modelbutton: Set up tooltips X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~9^2~162^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=55ccaf9df9af4322266fa79cfad144575c16f23d;p=gtk4.git modelbutton: Set up tooltips Use the text of iconic model buttons as tooltip. Fixes: #5220 --- diff --git a/gtk/gtkmodelbutton.c b/gtk/gtkmodelbutton.c index c24115dd1a..c6565af843 100644 --- a/gtk/gtkmodelbutton.c +++ b/gtk/gtkmodelbutton.c @@ -640,6 +640,22 @@ update_visibility (GtkModelButton *self) } } +static void +update_tooltip (GtkModelButton *self) +{ + if (self->iconic) + { + if (gtk_label_get_use_markup (GTK_LABEL (self->label))) + gtk_widget_set_tooltip_markup (GTK_WIDGET (self), gtk_label_get_text (GTK_LABEL (self->label))); + else + gtk_widget_set_tooltip_text (GTK_WIDGET (self), gtk_label_get_text (GTK_LABEL (self->label))); + } + else + { + gtk_widget_set_tooltip_text (GTK_WIDGET (self), NULL); + } +} + static void gtk_model_button_set_icon (GtkModelButton *self, GIcon *icon) @@ -662,6 +678,8 @@ gtk_model_button_set_icon (GtkModelButton *self, } update_visibility (self); + update_tooltip (self); + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_ICON]); } @@ -669,9 +687,9 @@ static void gtk_model_button_set_text (GtkModelButton *button, const char *text) { - gtk_label_set_text_with_mnemonic (GTK_LABEL (button->label), - text ? text : ""); + gtk_label_set_text_with_mnemonic (GTK_LABEL (button->label), text ? text : ""); update_visibility (button); + update_tooltip (button); gtk_accessible_update_relation (GTK_ACCESSIBLE (button), GTK_ACCESSIBLE_RELATION_LABELLED_BY, button->label, NULL, @@ -690,6 +708,8 @@ gtk_model_button_set_use_markup (GtkModelButton *button, gtk_label_set_use_markup (GTK_LABEL (button->label), use_markup); update_visibility (button); + update_tooltip (button); + g_object_notify_by_pspec (G_OBJECT (button), properties[PROP_USE_MARKUP]); } @@ -769,6 +789,7 @@ gtk_model_button_set_iconic (GtkModelButton *self, update_node_name (self); update_visibility (self); + update_tooltip (self); g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_ICONIC]); }