summaryrefslogtreecommitdiff
path: root/gtk/gtktreedatalist.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2001-01-09 17:45:34 +0000
committerHavoc Pennington <hp@src.gnome.org>2001-01-09 17:45:34 +0000
commit637c61da761f10836994c47c70a80735889506d7 (patch)
treedd579c88a10faa6387f8274c285f6c4bf1bbb54e /gtk/gtktreedatalist.c
parent0056107b5d34fe44572587238173eeb182a6d513 (diff)
downloadgtk+-637c61da761f10836994c47c70a80735889506d7.tar.gz
handle case where there are no rows in the model
2001-01-09 Havoc Pennington <hp@redhat.com> * gtk/gtktreeview.c (gtk_tree_view_check_dirty): handle case where there are no rows in the model * gtk/gtkliststore.c (gtk_list_store_iter_children): if parent is NULL, then return the start of the list * gtk/gtktreeview.c (gtk_tree_view_setup_model): don't build tree if we can't get any rows from an empty model * gtk/gtktreeviewcolumn.h (struct _GtkTreeViewColumn): remove extraneous * after function pointer typedef usage * Makefile.am: don't specify full path to cp and rm * gtk/gtkcellrenderertextpixbuf.c (gtk_cell_renderer_text_pixbuf_get_size): check width/height != NULL before dereferencing, fixes a segfault that happened from time to time * gtk/gtkcellrendererpixbuf.c (gtk_cell_renderer_pixbuf_render): use gdk_pixbuf_render_to_drawable_alpha() to get alpha channel, and reindent the function (gtk_cell_renderer_pixbuf_get_size): indentation * gtk/gtkdialog.c (gtk_dialog_run): destroy main loop only after we quit it (gtk_dialog_add_buttons_valist): add g_return_if_fail (gtk_dialog_set_default_response): New function, to set default button (gtk_dialog_set_response_sensitive): New function, to set sensitivity of buttons * gtk/gtkcellrendererpixbuf.c (gtk_cell_renderer_pixbuf_get_property): allow getting a NULL pixbuf (gtk_cell_renderer_pixbuf_set_property): allow setting a NULL pixbuf * gtk/gtktreedatalist.c (_gtk_tree_data_list_node_to_value): handle any G_TYPE_OBJECT subclass, not just the base class, and also boxed types. (_gtk_tree_data_list_value_to_node): ditto * gtk/gtkrbtree.c: Run _gtk_rbtree_test at strategic points if --gtk-debug=tree * gtk/gtkmain.c: add GTK_DEBUG_TREE * gtk/gtkdebug.h: add GTK_DEBUG_TREE
Diffstat (limited to 'gtk/gtktreedatalist.c')
-rw-r--r--gtk/gtktreedatalist.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/gtk/gtktreedatalist.c b/gtk/gtktreedatalist.c
index 1e9b7f570c..6fdf9d2e9e 100644
--- a/gtk/gtktreedatalist.c
+++ b/gtk/gtktreedatalist.c
@@ -181,12 +181,15 @@ _gtk_tree_data_list_node_to_value (GtkTreeDataList *list,
case G_TYPE_STRING:
g_value_set_string (value, (gchar *) list->data.v_pointer);
break;
- case G_TYPE_OBJECT:
- g_value_set_object (value, (GObject *) list->data.v_pointer);
- break;
+
default:
- g_warning ("Unsupported type (%s) retrieved.", g_type_name (value->g_type));
- return;
+ if (g_type_is_a (type, G_TYPE_OBJECT))
+ g_value_set_object (value, (GObject *) list->data.v_pointer);
+ else if (g_type_is_a (type, G_TYPE_BOXED))
+ g_value_set_boxed (value, (GObject *) list->data.v_pointer);
+ else
+ g_warning ("Unsupported type (%s) retrieved.", g_type_name (value->g_type));
+ break;
}
}
@@ -220,12 +223,14 @@ _gtk_tree_data_list_value_to_node (GtkTreeDataList *list,
case G_TYPE_STRING:
list->data.v_pointer = g_value_dup_string (value);
break;
- case G_TYPE_OBJECT:
- list->data.v_pointer = g_value_dup_object (value);
- break;
default:
- g_warning ("Unsupported type (%s) stored.", g_type_name (value->g_type));
- return;
+ if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_OBJECT))
+ list->data.v_pointer = g_value_dup_object (value);
+ else if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_BOXED))
+ list->data.v_pointer = g_value_dup_boxed (value);
+ else
+ g_warning ("Unsupported type (%s) stored.", g_type_name (value->g_type));
+ break;
}
}