summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Hasselmann <mathias.hasselmann@gmx.de>2007-06-15 18:25:11 +0000
committerMathias Hasselmann <hasselmm@src.gnome.org>2007-06-15 18:25:11 +0000
commitced0bab02f7593ec5b84e40dfc181f363f3e294a (patch)
treef761a596ed4b50988c84dba6dd8b3eb0ac1d6506
parent9b604e29a25ea6db2b65a8592af205467591e23f (diff)
downloadgtk+-ced0bab02f7593ec5b84e40dfc181f363f3e294a.tar.gz
Improving handling of tooltip-text property. Also check result of tooltip
2007-06-15 Mathias Hasselmann <mathias.hasselmann@gmx.de> * gtk/gtkwidget.c: Improving handling of tooltip-text property. * tests/testtooltips.c: Also check result of tooltip getters. svn path=/trunk/; revision=18143
-rw-r--r--ChangeLog5
-rw-r--r--gtk/gtkwidget.c23
-rw-r--r--tests/testtooltips.c20
3 files changed, 32 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index 76bc929cb2..d95cf21f36 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2007-06-15 Mathias Hasselmann <mathias.hasselmann@gmx.de>
+ * gtk/gtkwidget.c: Improving handling of tooltip-text property.
+ * tests/testtooltips.c: Also check result of tooltip getters.
+
+2007-06-15 Mathias Hasselmann <mathias.hasselmann@gmx.de>
+
* docs/reference/gtk/gtk-sections.txt, gtk/gtk.symbols,
gtk/gtkwidget.c, gtk/gtkwidget.h, tests/testtooltips.c: Introduce
convenience property "GtkWidget:tooltip-text" taking care of escaping
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 97c242f854..577b1dbc02 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -2042,8 +2042,7 @@ gtk_widget_set_property (GObject *object,
g_object_set_qdata_full (object, quark_tooltip_markup,
tooltip_markup, g_free);
- tmp = (tooltip_window != NULL || tooltip_markup != NULL);
- gtk_widget_set_has_tooltip (widget, tmp, FALSE);
+ gtk_widget_set_has_tooltip (widget, TRUE, FALSE);
break;
default:
break;
@@ -2145,20 +2144,12 @@ gtk_widget_get_property (GObject *object,
case PROP_TOOLTIP_TEXT:
{
gchar *escaped = g_object_get_qdata (object, quark_tooltip_markup);
- if (!escaped)
- g_value_set_string (value, NULL);
- else
- {
- gchar *text;
-
- if (pango_parse_markup (escaped, -1, 0, NULL, &text, NULL, NULL))
- {
- g_value_set_string (value, text);
- g_free (text);
- }
- else
- g_value_set_string (value, NULL);
- }
+ gchar *text = NULL;
+
+ if (escaped && !pango_parse_markup (escaped, -1, 0, NULL, &text, NULL, NULL))
+ g_assert (NULL == text); /* text should still be NULL in case of markup errors */
+
+ g_value_set_string (value, text);
}
break;
case PROP_TOOLTIP_MARKUP:
diff --git a/tests/testtooltips.c b/tests/testtooltips.c
index 3a94c4438b..358cb90654 100644
--- a/tests/testtooltips.c
+++ b/tests/testtooltips.c
@@ -273,6 +273,8 @@ main (int argc, char *argv[])
GtkTextIter iter;
GtkTextTag *tag;
+ gchar *text, *markup;
+
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
@@ -289,6 +291,12 @@ main (int argc, char *argv[])
gtk_widget_set_tooltip_text (button, "Hello, I am a static tooltip.");
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
+ text = gtk_widget_get_tooltip_text (button);
+ markup = gtk_widget_get_tooltip_markup (button);
+ g_assert (g_str_equal ("Hello, I am a static tooltip.", text));
+ g_assert (g_str_equal ("Hello, I am a static tooltip.", markup));
+ g_free (text); g_free (markup);
+
/* A check button using the query-tooltip signal */
button = gtk_check_button_new_with_label ("I use the query-tooltip signal");
g_object_set (button, "has-tooltip", TRUE, NULL);
@@ -302,12 +310,24 @@ main (int argc, char *argv[])
gtk_widget_set_tooltip_text (button, "Label & and tooltip");
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
+ text = gtk_widget_get_tooltip_text (button);
+ markup = gtk_widget_get_tooltip_markup (button);
+ g_assert (g_str_equal ("Label & and tooltip", text));
+ g_assert (g_str_equal ("Label &amp; and tooltip", markup));
+ g_free (text); g_free (markup);
+
/* A selectable label */
button = gtk_label_new ("I am a selectable label");
gtk_label_set_selectable (GTK_LABEL (button), TRUE);
gtk_widget_set_tooltip_markup (button, "<b>Another</b> Label tooltip");
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
+ text = gtk_widget_get_tooltip_text (button);
+ markup = gtk_widget_get_tooltip_markup (button);
+ g_assert (g_str_equal ("Another Label tooltip", text));
+ g_assert (g_str_equal ("<b>Another</b> Label tooltip", markup));
+ g_free (text); g_free (markup);
+
/* Another one, with a custom tooltip window */
button = gtk_check_button_new_with_label ("This one has a custom tooltip window!");
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);