Maintain selected rows when switching between list model and tree model

We keep track of the DIVE_INDEX of all selected dives and simply re-select
those dives after changing model (date based sort or sort by other
column).

There are a few TODOs left. We lose the sort direction (ascending /
descending) when switching models. We also don't correctly deal with the
user selecting summary rows in the tree model.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2012-08-13 14:53:07 -07:00
parent 27a505e579
commit dc9d0e23e5
3 changed files with 62 additions and 6 deletions

View file

@ -142,10 +142,11 @@ static void process_all_dives(struct dive *dive, struct dive **prev_dive)
}
}
void process_selected_dives(GList *selected_dives, GtkTreeModel *model)
void process_selected_dives(GList *selected_dives, int *selectiontracker, GtkTreeModel *model)
{
struct dive *dp;
unsigned int i;
int idx;
GtkTreeIter iter;
GtkTreePath *path;
@ -157,9 +158,13 @@ void process_selected_dives(GList *selected_dives, GtkTreeModel *model)
path = g_list_nth_data(selected_dives, i);
if (gtk_tree_model_get_iter(model, &iter, path)) {
gtk_tree_model_get_value(model, &iter, 0, &value);
dp = get_dive(g_value_get_int(&value));
idx = g_value_get_int(&value);
dp = get_dive(idx);
if (dp) {
selectiontracker[i] = idx;
process_dive(dp, &stats_selection);
}
}
process_dive(dp, &stats_selection);
}
}