diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-01-28 13:04:01 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-01-28 13:06:30 -0500 |
commit | dce21f06ddbab1cdbd25621897df32b472fd72c7 (patch) | |
tree | bd6a632a8765e8f26c406954d989f1f1718abff3 | |
parent | 56c1c4152f41c625f09937ee60098e1a3dfe3ba4 (diff) | |
download | gtk+-dce21f06ddbab1cdbd25621897df32b472fd72c7.tar.gz |
tooltip: Don't play games with max-width-chars
Setting max-width-chars to the number of characters
in the string works ok only as long as the average
char width we get from Pango matches reality. Sadly
that seems not always the case, and this code was
causing short Chinese tooltips to always be broken
into two lines.
Fixes: #4470
-rw-r--r-- | gtk/gtktooltipwindow.c | 31 | ||||
-rw-r--r-- | gtk/ui/gtktooltipwindow.ui | 1 |
2 files changed, 3 insertions, 29 deletions
diff --git a/gtk/gtktooltipwindow.c b/gtk/gtktooltipwindow.c index 491598a1f5..a24bcb4157 100644 --- a/gtk/gtktooltipwindow.c +++ b/gtk/gtktooltipwindow.c @@ -401,36 +401,12 @@ gtk_tooltip_window_new (void) return g_object_new (GTK_TYPE_TOOLTIP_WINDOW, NULL); } -static void -update_label_width (GtkLabel *label) -{ - const char *text; - - text = gtk_label_get_text (label); - if (strchr (text, '\n')) - { - gtk_label_set_wrap (label, FALSE); - } - else - { - int len; - - len = g_utf8_strlen (text, -1); - - gtk_label_set_max_width_chars (label, MIN (len, 50)); - gtk_label_set_wrap (label, TRUE); - } -} - void gtk_tooltip_window_set_label_markup (GtkTooltipWindow *window, const char *markup) { if (markup != NULL) - { - gtk_label_set_markup (GTK_LABEL (window->label), markup); - update_label_width (GTK_LABEL (window->label)); - } + gtk_label_set_markup (GTK_LABEL (window->label), markup); gtk_widget_set_visible (window->label, markup != NULL); } @@ -440,10 +416,7 @@ gtk_tooltip_window_set_label_text (GtkTooltipWindow *window, const char *text) { if (text != NULL) - { - gtk_label_set_text (GTK_LABEL (window->label), text); - update_label_width (GTK_LABEL (window->label)); - } + gtk_label_set_text (GTK_LABEL (window->label), text); gtk_widget_set_visible (window->label, text != NULL); } diff --git a/gtk/ui/gtktooltipwindow.ui b/gtk/ui/gtktooltipwindow.ui index 127fa045e4..2cecd58c73 100644 --- a/gtk/ui/gtktooltipwindow.ui +++ b/gtk/ui/gtktooltipwindow.ui @@ -14,6 +14,7 @@ <child> <object class="GtkLabel" id="label"> <property name="wrap">1</property> + <property name="max-width-chars">50</property> </object> </child> </object> |