diff options
author | Kristian Rietveld <kris@gtk.org> | 2002-04-08 17:42:45 +0000 |
---|---|---|
committer | Kristian Rietveld <kristian@src.gnome.org> | 2002-04-08 17:42:45 +0000 |
commit | 18dfabc12eabc52d55d61b23b34b9b4bc37dd697 (patch) | |
tree | 3ce0a85996f8fdc70269921d3fb0b77121be7d04 /gtk/gtktreeselection.c | |
parent | 673e14fe8d05707a84e8f28c03082fd297d7f09a (diff) | |
download | gtk+-18dfabc12eabc52d55d61b23b34b9b4bc37dd697.tar.gz |
check the return value of _gtk_tree_view_find_node and return if it's
Mon Apr 8 20:28:54 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtktreeselection.c (gtk_tree_selection_select_path),
(gtk_tree_selection_unselect_path),
(gtk_tree_selection_path_is_selected): check the return value of
_gtk_tree_view_find_node and return if it's TRUE. This makes those
functions work somewhat saner on non-expanded trees.
Diffstat (limited to 'gtk/gtktreeselection.c')
-rw-r--r-- | gtk/gtktreeselection.c | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/gtk/gtktreeselection.c b/gtk/gtktreeselection.c index 1be26116f0..4fe966a316 100644 --- a/gtk/gtktreeselection.c +++ b/gtk/gtktreeselection.c @@ -527,17 +527,19 @@ gtk_tree_selection_select_path (GtkTreeSelection *selection, GtkRBNode *node; GtkRBTree *tree; GdkModifierType state = 0; + gboolean ret; g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); g_return_if_fail (selection->tree_view != NULL); g_return_if_fail (path != NULL); - _gtk_tree_view_find_node (selection->tree_view, - path, - &tree, - &node); + ret = _gtk_tree_view_find_node (selection->tree_view, + path, + &tree, + &node); - if (node == NULL || GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED)) + if (node == NULL || GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED) || + ret == TRUE) return; if (selection->type == GTK_SELECTION_MULTIPLE) @@ -563,17 +565,19 @@ gtk_tree_selection_unselect_path (GtkTreeSelection *selection, { GtkRBNode *node; GtkRBTree *tree; + gboolean ret; g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); g_return_if_fail (selection->tree_view != NULL); g_return_if_fail (path != NULL); - _gtk_tree_view_find_node (selection->tree_view, - path, - &tree, - &node); + ret = _gtk_tree_view_find_node (selection->tree_view, + path, + &tree, + &node); - if (node == NULL || !GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED)) + if (node == NULL || !GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED) || + ret == TRUE) return; _gtk_tree_selection_internal_select_node (selection, @@ -656,18 +660,20 @@ gtk_tree_selection_path_is_selected (GtkTreeSelection *selection, { GtkRBNode *node; GtkRBTree *tree; + gboolean ret; g_return_val_if_fail (GTK_IS_TREE_SELECTION (selection), FALSE); g_return_val_if_fail (path != NULL, FALSE); g_return_val_if_fail (selection->tree_view != NULL, FALSE); g_return_val_if_fail (selection->tree_view->priv->model != NULL, FALSE); - _gtk_tree_view_find_node (selection->tree_view, - path, - &tree, - &node); + ret = _gtk_tree_view_find_node (selection->tree_view, + path, + &tree, + &node); - if ((node == NULL) || !GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED)) + if ((node == NULL) || !GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED) || + ret == TRUE) return FALSE; return TRUE; |