summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-01-28 13:04:01 -0500
committerMatthias Clasen <mclasen@redhat.com>2023-01-28 13:06:30 -0500
commitdce21f06ddbab1cdbd25621897df32b472fd72c7 (patch)
treebd6a632a8765e8f26c406954d989f1f1718abff3
parent56c1c4152f41c625f09937ee60098e1a3dfe3ba4 (diff)
downloadgtk+-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.c31
-rw-r--r--gtk/ui/gtktooltipwindow.ui1
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>