summaryrefslogtreecommitdiff
path: root/gtk/gtktreeselection.c
diff options
context:
space:
mode:
authorKristian Rietveld <kris@gtk.org>2002-04-08 17:42:45 +0000
committerKristian Rietveld <kristian@src.gnome.org>2002-04-08 17:42:45 +0000
commit18dfabc12eabc52d55d61b23b34b9b4bc37dd697 (patch)
tree3ce0a85996f8fdc70269921d3fb0b77121be7d04 /gtk/gtktreeselection.c
parent673e14fe8d05707a84e8f28c03082fd297d7f09a (diff)
downloadgtk+-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.c36
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;