summaryrefslogtreecommitdiff
path: root/gtk/gtktreeview.c
diff options
context:
space:
mode:
authorKristian Rietveld <kris@imendio.com>2008-05-30 22:59:13 +0000
committerKristian Rietveld <kristian@src.gnome.org>2008-05-30 22:59:13 +0000
commitf1405056f22493f6f320800be5bb141a91faa63a (patch)
tree6eecb562ef704c53cdaadc466d01530d7a40499f /gtk/gtktreeview.c
parent2ab7f3ddb34dfa94faf40aa9bbf7c453a8c7f5b9 (diff)
downloadgtk+-f1405056f22493f6f320800be5bb141a91faa63a.tar.gz
Bug 530146 - Setting non-string tooltip with
2008-05-31 Kristian Rietveld <kris@imendio.com> Bug 530146 - Setting non-string tooltip with gtk_tree_view_set_tooltip_column() segfaults * gtk/gtktreeview.c (gtk_tree_view_set_tooltip_query_cb): use gtk_tree_model_get_value() and explicitly transform the value to a string before setting it as tooltip. svn path=/trunk/; revision=20261
Diffstat (limited to 'gtk/gtktreeview.c')
-rw-r--r--gtk/gtktreeview.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 455a4fa3a7..6bebb8cf67 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -15514,7 +15514,8 @@ gtk_tree_view_set_tooltip_query_cb (GtkWidget *widget,
GtkTooltip *tooltip,
gpointer data)
{
- gchar *str;
+ GValue value = { 0, };
+ GValue transformed = { 0, };
GtkTreeIter iter;
GtkTreePath *path;
GtkTreeModel *model;
@@ -15526,19 +15527,34 @@ gtk_tree_view_set_tooltip_query_cb (GtkWidget *widget,
&model, &path, &iter))
return FALSE;
- gtk_tree_model_get (model, &iter, tree_view->priv->tooltip_column, &str, -1);
+ gtk_tree_model_get_value (model, &iter,
+ tree_view->priv->tooltip_column, &value);
- if (!str)
+ g_value_init (&transformed, G_TYPE_STRING);
+
+ if (!g_value_transform (&value, &transformed))
+ {
+ g_value_unset (&value);
+ gtk_tree_path_free (path);
+
+ return FALSE;
+ }
+
+ g_value_unset (&value);
+
+ if (!g_value_get_string (&transformed))
{
+ g_value_unset (&transformed);
gtk_tree_path_free (path);
+
return FALSE;
}
- gtk_tooltip_set_markup (tooltip, str);
+ gtk_tooltip_set_markup (tooltip, g_value_get_string (&transformed));
gtk_tree_view_set_tooltip_row (tree_view, tooltip, path);
gtk_tree_path_free (path);
- g_free (str);
+ g_value_unset (&transformed);
return TRUE;
}