[PATCH] Properly de-select dives in collapsed trips that are unselected
Linus Torvalds
torvalds at linux-foundation.org
Thu Feb 7 16:31:28 PST 2013
From: Linus Torvalds <torvalds at linux-foundation.org>
Date: Fri, 8 Feb 2013 11:28:13 +1100
Subject: [PATCH] Properly de-select dives in collapsed trips that are unselected
We had the logic for the "select" case, but not for the "deselect" case. Ugh.
Reported-by: Dirk Hohndel <dirk at hohndel.org>
Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
---
divelist.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/divelist.c b/divelist.c
index e500391104b6..7dfe76328691 100644
--- a/divelist.c
+++ b/divelist.c
@@ -2700,9 +2700,21 @@ static gboolean modify_selection_cb(GtkTreeSelection *selection, GtkTreeModel *m
gtk_tree_model_get_iter(model, &iter, path);
gtk_tree_model_get(model, &iter, DIVE_INDEX, &idx, DIVE_DATE, &when, -1);
if (idx < 0) {
+ int i;
+ struct dive *dive;
dive_trip_t *trip = find_trip_by_time(when);
- if (trip)
- trip->selected = 0;
+ if (!trip)
+ return TRUE;
+
+ trip->selected = 0;
+ /* If this is expanded, let the gtk selection happen for each dive under it */
+ if (gtk_tree_view_row_expanded(GTK_TREE_VIEW(dive_list.tree_view), path))
+ return TRUE;
+ /* Otherwise, consider each dive under it deselected */
+ for_each_dive(i, dive) {
+ if (dive->divetrip == trip)
+ deselect_dive(i);
+ }
} else {
deselect_dive(idx);
}
--
1.8.1.2.545.g2f19ada
More information about the subsurface
mailing list