From dce21f06ddbab1cdbd25621897df32b472fd72c7 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 28 Jan 2023 13:04:01 -0500 Subject: [PATCH 1/2] 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 --- gtk/gtktooltipwindow.c | 31 ++----------------------------- 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 @@ 1 + 50 From 1e9dbf2df06c80d62645f705b9d5ad5c37b8695f Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 28 Jan 2023 10:32:19 -0500 Subject: [PATCH 2/2] tooltip: Prevent too-wide tooltip windows Set the label to expand, so it actually fills the width that we allocated for it, instead of shrinking back to the minimum width for its height. Fixes: #5521 --- gtk/ui/gtktooltipwindow.ui | 1 + 1 file changed, 1 insertion(+) diff --git a/gtk/ui/gtktooltipwindow.ui b/gtk/ui/gtktooltipwindow.ui index 2cecd58c73..d0fc9bc1c6 100644 --- a/gtk/ui/gtktooltipwindow.ui +++ b/gtk/ui/gtktooltipwindow.ui @@ -13,6 +13,7 @@ + 1 1 50