[gtk/matthiasc/for-master: 5/7] tooltips: Fix a line wrap mishap
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/for-master: 5/7] tooltips: Fix a line wrap mishap
- Date: Wed, 27 May 2020 23:03:36 +0000 (UTC)
commit 1927a8af71b236aafba125eb9ce732b5d7b9d1fd
Author: Matthias Clasen <mclasen redhat com>
Date: Wed May 27 19:00:18 2020 -0400
tooltips: Fix a line wrap mishap
We don't want wrapping labels to cause tooltips to
have excessive height, so we need to set a reasonable
value for width-chars, without forcing short tooltips
into a full line length. Also be careful to respect
preexisting line breaks (we have such examples in
widget factory).
gtk/gtktooltipwindow.c | 24 ++++++++++++++++++++++++
gtk/ui/gtktooltipwindow.ui | 1 -
2 files changed, 24 insertions(+), 1 deletion(-)
---
diff --git a/gtk/gtktooltipwindow.c b/gtk/gtktooltipwindow.c
index 432f2aef8e..c30ebf1616 100644
--- a/gtk/gtktooltipwindow.c
+++ b/gtk/gtktooltipwindow.c
@@ -404,6 +404,28 @@ 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_width_chars (label, MIN (len, 50));
+ 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)
@@ -411,6 +433,7 @@ gtk_tooltip_window_set_label_markup (GtkTooltipWindow *window,
if (markup != NULL)
{
gtk_label_set_markup (GTK_LABEL (window->label), markup);
+ update_label_width (GTK_LABEL (window->label));
gtk_widget_show (window->label);
}
else
@@ -426,6 +449,7 @@ gtk_tooltip_window_set_label_text (GtkTooltipWindow *window,
if (text != NULL)
{
gtk_label_set_text (GTK_LABEL (window->label), text);
+ update_label_width (GTK_LABEL (window->label));
gtk_widget_show (window->label);
}
else
diff --git a/gtk/ui/gtktooltipwindow.ui b/gtk/ui/gtktooltipwindow.ui
index 59bd028d89..fd2e7b7fd3 100644
--- a/gtk/ui/gtktooltipwindow.ui
+++ b/gtk/ui/gtktooltipwindow.ui
@@ -19,7 +19,6 @@
<child>
<object class="GtkLabel" id="label">
<property name="wrap">1</property>
- <property name="max-width-chars">70</property>
</object>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]