mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Fix a crash when changing sort column
We were using the tree model to check the selection, even though the active model is the list model after switching to a different sort column. To make things clearer I renamed the access macros to be more consistent. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									ea2900a34a
								
							
						
					
					
						commit
						22ff8df880
					
				
					 1 changed files with 82 additions and 80 deletions
				
			
		
							
								
								
									
										162
									
								
								divelist.c
									
										
									
									
									
								
							
							
						
						
									
										162
									
								
								divelist.c
									
										
									
									
									
								
							| 
						 | 
					@ -31,9 +31,11 @@ struct DiveList {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct DiveList dive_list;
 | 
					static struct DiveList dive_list;
 | 
				
			||||||
 | 
					#define MODEL(_dl) GTK_TREE_MODEL((_dl).model)
 | 
				
			||||||
#define TREEMODEL(_dl) GTK_TREE_MODEL((_dl).treemodel)
 | 
					#define TREEMODEL(_dl) GTK_TREE_MODEL((_dl).treemodel)
 | 
				
			||||||
#define TREESTORE(_dl) GTK_TREE_STORE((_dl).treemodel)
 | 
					 | 
				
			||||||
#define LISTMODEL(_dl) GTK_TREE_MODEL((_dl).listmodel)
 | 
					#define LISTMODEL(_dl) GTK_TREE_MODEL((_dl).listmodel)
 | 
				
			||||||
 | 
					#define STORE(_dl) GTK_TREE_STORE((_dl).model)
 | 
				
			||||||
 | 
					#define TREESTORE(_dl) GTK_TREE_STORE((_dl).treemodel)
 | 
				
			||||||
#define LISTSTORE(_dl) GTK_TREE_STORE((_dl).listmodel)
 | 
					#define LISTSTORE(_dl) GTK_TREE_STORE((_dl).listmodel)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GList *dive_trip_list;
 | 
					GList *dive_trip_list;
 | 
				
			||||||
| 
						 | 
					@ -130,7 +132,7 @@ static void first_leaf(GtkTreeModel *model, GtkTreeIter *iter, int *diveidx)
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		if(!gtk_tree_view_row_expanded(GTK_TREE_VIEW(dive_list.tree_view), tpath))
 | 
							if(!gtk_tree_view_row_expanded(GTK_TREE_VIEW(dive_list.tree_view), tpath))
 | 
				
			||||||
			gtk_tree_view_expand_row(GTK_TREE_VIEW(dive_list.tree_view), tpath, FALSE);
 | 
								gtk_tree_view_expand_row(GTK_TREE_VIEW(dive_list.tree_view), tpath, FALSE);
 | 
				
			||||||
		gtk_tree_model_get(GTK_TREE_MODEL(model), iter, DIVE_INDEX, diveidx, -1);
 | 
							gtk_tree_model_get(model, iter, DIVE_INDEX, diveidx, -1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -139,7 +141,7 @@ static void first_leaf(GtkTreeModel *model, GtkTreeIter *iter, int *diveidx)
 | 
				
			||||||
void row_expanded_cb(GtkTreeView *tree_view, GtkTreeIter *iter, GtkTreePath *path, gpointer data)
 | 
					void row_expanded_cb(GtkTreeView *tree_view, GtkTreeIter *iter, GtkTreePath *path, gpointer data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	GtkTreeIter child;
 | 
						GtkTreeIter child;
 | 
				
			||||||
	GtkTreeModel *model = TREEMODEL(dive_list);
 | 
						GtkTreeModel *model = MODEL(dive_list);
 | 
				
			||||||
	GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
 | 
						GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!gtk_tree_model_iter_children(model, &child, iter))
 | 
						if (!gtk_tree_model_iter_children(model, &child, iter))
 | 
				
			||||||
| 
						 | 
					@ -183,7 +185,7 @@ static int selected_children(GtkTreeModel *model, GtkTreeIter *iter)
 | 
				
			||||||
   shows up as selected too */
 | 
					   shows up as selected too */
 | 
				
			||||||
void row_collapsed_cb(GtkTreeView *tree_view, GtkTreeIter *iter, GtkTreePath *path, gpointer data)
 | 
					void row_collapsed_cb(GtkTreeView *tree_view, GtkTreeIter *iter, GtkTreePath *path, gpointer data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	GtkTreeModel *model = TREEMODEL(dive_list);
 | 
						GtkTreeModel *model = MODEL(dive_list);
 | 
				
			||||||
	GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
 | 
						GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (selected_children(model, iter))
 | 
						if (selected_children(model, iter))
 | 
				
			||||||
| 
						 | 
					@ -267,7 +269,7 @@ static void select_dive_group(GtkTreeModel *model, GtkTreeSelection *selection,
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static void check_selection_cb(GtkTreeIter *iter, GtkTreeSelection *selection)
 | 
					static void check_selection_cb(GtkTreeIter *iter, GtkTreeSelection *selection)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	GtkTreeModel *model = TREEMODEL(dive_list);
 | 
						GtkTreeModel *model = MODEL(dive_list);
 | 
				
			||||||
	struct dive *dive;
 | 
						struct dive *dive;
 | 
				
			||||||
	int idx, gtk_selected;
 | 
						int idx, gtk_selected;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -808,7 +810,7 @@ static void fill_one_dive(struct dive *dive,
 | 
				
			||||||
			  GtkTreeIter *iter)
 | 
								  GtkTreeIter *iter)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	char *location, *cylinder, *suit;
 | 
						char *location, *cylinder, *suit;
 | 
				
			||||||
	GtkTreeStore *othermodel;
 | 
						GtkTreeModel *othermodel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	get_cylinder(dive, &cylinder);
 | 
						get_cylinder(dive, &cylinder);
 | 
				
			||||||
	get_location(dive, &location);
 | 
						get_location(dive, &location);
 | 
				
			||||||
| 
						 | 
					@ -830,12 +832,12 @@ static void fill_one_dive(struct dive *dive,
 | 
				
			||||||
	free(suit);
 | 
						free(suit);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (model == TREEMODEL(dive_list))
 | 
						if (model == TREEMODEL(dive_list))
 | 
				
			||||||
		othermodel = dive_list.listmodel;
 | 
							othermodel = LISTMODEL(dive_list);
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		othermodel = dive_list.treemodel;
 | 
							othermodel = TREEMODEL(dive_list);
 | 
				
			||||||
	if (othermodel != dive_list.model)
 | 
						if (othermodel != MODEL(dive_list))
 | 
				
			||||||
		/* recursive call */
 | 
							/* recursive call */
 | 
				
			||||||
		gtk_tree_model_foreach(GTK_TREE_MODEL(othermodel), set_one_dive, dive);
 | 
							gtk_tree_model_foreach(othermodel, set_one_dive, dive);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static gboolean set_one_dive(GtkTreeModel *model,
 | 
					static gboolean set_one_dive(GtkTreeModel *model,
 | 
				
			||||||
| 
						 | 
					@ -862,7 +864,7 @@ static gboolean set_one_dive(GtkTreeModel *model,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void flush_divelist(struct dive *dive)
 | 
					void flush_divelist(struct dive *dive)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	GtkTreeModel *model = TREEMODEL(dive_list);
 | 
						GtkTreeModel *model = MODEL(dive_list);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gtk_tree_model_foreach(model, set_one_dive, dive);
 | 
						gtk_tree_model_foreach(model, set_one_dive, dive);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -877,7 +879,7 @@ void set_divelist_font(const char *font)
 | 
				
			||||||
void update_dive_list_units(void)
 | 
					void update_dive_list_units(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const char *unit;
 | 
						const char *unit;
 | 
				
			||||||
	GtkTreeModel *model = TREEMODEL(dive_list);
 | 
						GtkTreeModel *model = MODEL(dive_list);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	(void) get_depth_units(0, NULL, &unit);
 | 
						(void) get_depth_units(0, NULL, &unit);
 | 
				
			||||||
	gtk_tree_view_column_set_title(dive_list.depth, unit);
 | 
						gtk_tree_view_column_set_title(dive_list.depth, unit);
 | 
				
			||||||
| 
						 | 
					@ -1035,12 +1037,12 @@ static void fill_dive_list(void)
 | 
				
			||||||
				DIVE_LOCATION, dive_trip->location,
 | 
									DIVE_LOCATION, dive_trip->location,
 | 
				
			||||||
				-1);
 | 
									-1);
 | 
				
			||||||
	update_dive_list_units();
 | 
						update_dive_list_units();
 | 
				
			||||||
	if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(dive_list.model), &iter)) {
 | 
						if (gtk_tree_model_get_iter_first(MODEL(dive_list), &iter)) {
 | 
				
			||||||
		GtkTreeSelection *selection;
 | 
							GtkTreeSelection *selection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* select the last dive (and make sure it's an actual dive that is selected) */
 | 
							/* select the last dive (and make sure it's an actual dive that is selected) */
 | 
				
			||||||
		gtk_tree_model_get(GTK_TREE_MODEL(dive_list.model), &iter, DIVE_INDEX, &selected_dive, -1);
 | 
							gtk_tree_model_get(MODEL(dive_list), &iter, DIVE_INDEX, &selected_dive, -1);
 | 
				
			||||||
		first_leaf(GTK_TREE_MODEL(dive_list.model), &iter, &selected_dive);
 | 
							first_leaf(MODEL(dive_list), &iter, &selected_dive);
 | 
				
			||||||
		selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
 | 
							selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
 | 
				
			||||||
		gtk_tree_selection_select_iter(selection, &iter);
 | 
							gtk_tree_selection_select_iter(selection, &iter);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -1134,10 +1136,10 @@ static void row_activated_cb(GtkTreeView *tree_view,
 | 
				
			||||||
	int index;
 | 
						int index;
 | 
				
			||||||
	GtkTreeIter iter;
 | 
						GtkTreeIter iter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(dive_list.model), &iter, path))
 | 
						if (!gtk_tree_model_get_iter(MODEL(dive_list), &iter, path))
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gtk_tree_model_get(GTK_TREE_MODEL(dive_list.model), &iter, DIVE_INDEX, &index, -1);
 | 
						gtk_tree_model_get(MODEL(dive_list), &iter, DIVE_INDEX, &index, -1);
 | 
				
			||||||
	/* a negative index is special for the "group by date" entries */
 | 
						/* a negative index is special for the "group by date" entries */
 | 
				
			||||||
	if (index < 0) {
 | 
						if (index < 0) {
 | 
				
			||||||
		collapse_expand(tree_view, path);
 | 
							collapse_expand(tree_view, path);
 | 
				
			||||||
| 
						 | 
					@ -1166,12 +1168,12 @@ void edit_trip_cb(GtkWidget *menuitem, GtkTreePath *path)
 | 
				
			||||||
	struct dive *dive_trip;
 | 
						struct dive *dive_trip;
 | 
				
			||||||
	GList *trip;
 | 
						GList *trip;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gtk_tree_model_get_iter(TREEMODEL(dive_list), &iter, path);
 | 
						gtk_tree_model_get_iter(MODEL(dive_list), &iter, path);
 | 
				
			||||||
	gtk_tree_model_get(TREEMODEL(dive_list), &iter, DIVE_DATE, &when, -1);
 | 
						gtk_tree_model_get(MODEL(dive_list), &iter, DIVE_DATE, &when, -1);
 | 
				
			||||||
	trip = FIND_TRIP(when);
 | 
						trip = FIND_TRIP(when);
 | 
				
			||||||
	dive_trip = DIVE_TRIP(trip);
 | 
						dive_trip = DIVE_TRIP(trip);
 | 
				
			||||||
	if (edit_trip(dive_trip))
 | 
						if (edit_trip(dive_trip))
 | 
				
			||||||
		gtk_tree_store_set(TREESTORE(dive_list), &iter, DIVE_LOCATION, dive_trip->location, -1);
 | 
							gtk_tree_store_set(STORE(dive_list), &iter, DIVE_LOCATION, dive_trip->location, -1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void edit_selected_dives_cb(GtkWidget *menuitem, gpointer data)
 | 
					void edit_selected_dives_cb(GtkWidget *menuitem, gpointer data)
 | 
				
			||||||
| 
						 | 
					@ -1185,8 +1187,8 @@ void edit_dive_from_path_cb(GtkWidget *menuitem, GtkTreePath *path)
 | 
				
			||||||
	int idx;
 | 
						int idx;
 | 
				
			||||||
	struct dive *dive;
 | 
						struct dive *dive;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gtk_tree_model_get_iter(TREEMODEL(dive_list), &iter, path);
 | 
						gtk_tree_model_get_iter(MODEL(dive_list), &iter, path);
 | 
				
			||||||
	gtk_tree_model_get(TREEMODEL(dive_list), &iter, DIVE_INDEX, &idx, -1);
 | 
						gtk_tree_model_get(MODEL(dive_list), &iter, DIVE_INDEX, &idx, -1);
 | 
				
			||||||
	dive = get_dive(idx);
 | 
						dive = get_dive(idx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	edit_multi_dive_info(dive);
 | 
						edit_multi_dive_info(dive);
 | 
				
			||||||
| 
						 | 
					@ -1209,7 +1211,7 @@ static int copy_tree_node(GtkTreeIter *a, GtkTreeIter *b)
 | 
				
			||||||
	int totalweight, idx;
 | 
						int totalweight, idx;
 | 
				
			||||||
	char *cylinder_text;
 | 
						char *cylinder_text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gtk_tree_model_get(TREEMODEL(dive_list), a,
 | 
						gtk_tree_model_get(MODEL(dive_list), a,
 | 
				
			||||||
		DIVE_INDEX, &idx,
 | 
							DIVE_INDEX, &idx,
 | 
				
			||||||
		DIVE_NR, &store_dive.number,
 | 
							DIVE_NR, &store_dive.number,
 | 
				
			||||||
		DIVE_DATE, &store_dive.when,
 | 
							DIVE_DATE, &store_dive.when,
 | 
				
			||||||
| 
						 | 
					@ -1224,7 +1226,7 @@ static int copy_tree_node(GtkTreeIter *a, GtkTreeIter *b)
 | 
				
			||||||
		DIVE_OTU, &store_dive.otu,
 | 
							DIVE_OTU, &store_dive.otu,
 | 
				
			||||||
		DIVE_LOCATION, &store_dive.location,
 | 
							DIVE_LOCATION, &store_dive.location,
 | 
				
			||||||
		-1);
 | 
							-1);
 | 
				
			||||||
	gtk_tree_store_set(TREESTORE(dive_list), b,
 | 
						gtk_tree_store_set(STORE(dive_list), b,
 | 
				
			||||||
		DIVE_INDEX, idx,
 | 
							DIVE_INDEX, idx,
 | 
				
			||||||
		DIVE_NR, store_dive.number,
 | 
							DIVE_NR, store_dive.number,
 | 
				
			||||||
		DIVE_DATE, store_dive.when,
 | 
							DIVE_DATE, store_dive.when,
 | 
				
			||||||
| 
						 | 
					@ -1251,15 +1253,15 @@ static void update_trip_timestamp(GtkTreeIter *parent, struct dive *divetrip)
 | 
				
			||||||
	int nr;
 | 
						int nr;
 | 
				
			||||||
	time_t t1, t2, tnew;
 | 
						time_t t1, t2, tnew;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (gtk_tree_store_iter_depth(TREESTORE(dive_list), parent) != 0)
 | 
						if (gtk_tree_store_iter_depth(STORE(dive_list), parent) != 0)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	nr = gtk_tree_model_iter_n_children(TREEMODEL(dive_list), parent);
 | 
						nr = gtk_tree_model_iter_n_children(MODEL(dive_list), parent);
 | 
				
			||||||
	gtk_tree_model_iter_nth_child(TREEMODEL(dive_list), &first_child, parent, 0);
 | 
						gtk_tree_model_iter_nth_child(MODEL(dive_list), &first_child, parent, 0);
 | 
				
			||||||
	gtk_tree_model_get(TREEMODEL(dive_list), &first_child, DIVE_DATE, &t1, -1);
 | 
						gtk_tree_model_get(MODEL(dive_list), &first_child, DIVE_DATE, &t1, -1);
 | 
				
			||||||
	gtk_tree_model_iter_nth_child(TREEMODEL(dive_list), &last_child, parent, nr - 1);
 | 
						gtk_tree_model_iter_nth_child(MODEL(dive_list), &last_child, parent, nr - 1);
 | 
				
			||||||
	gtk_tree_model_get(TREEMODEL(dive_list), &last_child, DIVE_DATE, &t2, -1);
 | 
						gtk_tree_model_get(MODEL(dive_list), &last_child, DIVE_DATE, &t2, -1);
 | 
				
			||||||
	tnew = MIN(t1, t2);
 | 
						tnew = MIN(t1, t2);
 | 
				
			||||||
	gtk_tree_store_set(TREESTORE(dive_list), parent, DIVE_DATE, tnew, -1);
 | 
						gtk_tree_store_set(STORE(dive_list), parent, DIVE_DATE, tnew, -1);
 | 
				
			||||||
	if (divetrip)
 | 
						if (divetrip)
 | 
				
			||||||
		divetrip->when = tnew;
 | 
							divetrip->when = tnew;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1278,20 +1280,20 @@ static GtkTreeIter *move_dive_between_trips(GtkTreeIter *dive_iter, GtkTreeIter
 | 
				
			||||||
	GtkTreeIter *new_iter = malloc(sizeof(GtkTreeIter));
 | 
						GtkTreeIter *new_iter = malloc(sizeof(GtkTreeIter));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (before)
 | 
						if (before)
 | 
				
			||||||
		gtk_tree_store_insert_before(GTK_TREE_STORE(TREEMODEL(dive_list)), new_iter, new_trip, sibling);
 | 
							gtk_tree_store_insert_before(STORE(dive_list), new_iter, new_trip, sibling);
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		gtk_tree_store_insert_after(GTK_TREE_STORE(TREEMODEL(dive_list)), new_iter, new_trip, sibling);
 | 
							gtk_tree_store_insert_after(STORE(dive_list), new_iter, new_trip, sibling);
 | 
				
			||||||
	idx = copy_tree_node(dive_iter, new_iter);
 | 
						idx = copy_tree_node(dive_iter, new_iter);
 | 
				
			||||||
	gtk_tree_model_get(TREEMODEL(dive_list), new_iter, DIVE_INDEX, &idx, -1);
 | 
						gtk_tree_model_get(MODEL(dive_list), new_iter, DIVE_INDEX, &idx, -1);
 | 
				
			||||||
	dive = get_dive(idx);
 | 
						dive = get_dive(idx);
 | 
				
			||||||
	gtk_tree_store_remove(GTK_TREE_STORE(TREEMODEL(dive_list)), dive_iter);
 | 
						gtk_tree_store_remove(STORE(dive_list), dive_iter);
 | 
				
			||||||
	if (old_trip) {
 | 
						if (old_trip) {
 | 
				
			||||||
		gtk_tree_model_get(TREEMODEL(dive_list), old_trip, DIVE_DATE, &old_when, -1);
 | 
							gtk_tree_model_get(MODEL(dive_list), old_trip, DIVE_DATE, &old_when, -1);
 | 
				
			||||||
		old_divetrip = DIVE_TRIP(find_matching_trip(old_when));
 | 
							old_divetrip = DIVE_TRIP(find_matching_trip(old_when));
 | 
				
			||||||
		update_trip_timestamp(old_trip, old_divetrip);
 | 
							update_trip_timestamp(old_trip, old_divetrip);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (new_trip) {
 | 
						if (new_trip) {
 | 
				
			||||||
		gtk_tree_model_get(TREEMODEL(dive_list), new_trip, DIVE_DATE, &new_when, -1);
 | 
							gtk_tree_model_get(MODEL(dive_list), new_trip, DIVE_DATE, &new_when, -1);
 | 
				
			||||||
		new_divetrip = dive->divetrip;
 | 
							new_divetrip = dive->divetrip;
 | 
				
			||||||
		update_trip_timestamp(new_trip, new_divetrip);
 | 
							update_trip_timestamp(new_trip, new_divetrip);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -1313,15 +1315,15 @@ static void turn_dive_into_trip(GtkTreePath *path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* this is a dive on the top level, insert trip AFTER it, populate its date / location, and
 | 
						/* this is a dive on the top level, insert trip AFTER it, populate its date / location, and
 | 
				
			||||||
	 * then move the dive below that trip */
 | 
						 * then move the dive below that trip */
 | 
				
			||||||
	gtk_tree_model_get_iter(TREEMODEL(dive_list), &iter, path);
 | 
						gtk_tree_model_get_iter(MODEL(dive_list), &iter, path);
 | 
				
			||||||
	gtk_tree_store_insert_after(TREESTORE(dive_list), &newparent, NULL, &iter);
 | 
						gtk_tree_store_insert_after(STORE(dive_list), &newparent, NULL, &iter);
 | 
				
			||||||
	gtk_tree_model_get(TREEMODEL(dive_list), &iter,
 | 
						gtk_tree_model_get(MODEL(dive_list), &iter,
 | 
				
			||||||
			DIVE_INDEX, &idx, DIVE_DATE, &when, DIVE_LOCATION, &location, -1);
 | 
								DIVE_INDEX, &idx, DIVE_DATE, &when, DIVE_LOCATION, &location, -1);
 | 
				
			||||||
	gtk_tree_store_set(TREESTORE(dive_list), &newparent,
 | 
						gtk_tree_store_set(STORE(dive_list), &newparent,
 | 
				
			||||||
			DIVE_INDEX, -1, DIVE_DATE, when, DIVE_LOCATION, location, -1);
 | 
								DIVE_INDEX, -1, DIVE_DATE, when, DIVE_LOCATION, location, -1);
 | 
				
			||||||
	free(location);
 | 
						free(location);
 | 
				
			||||||
	newiter = move_dive_between_trips(&iter, NULL, &newparent, NULL, FALSE);
 | 
						newiter = move_dive_between_trips(&iter, NULL, &newparent, NULL, FALSE);
 | 
				
			||||||
	treepath = gtk_tree_model_get_path(TREEMODEL(dive_list), newiter);
 | 
						treepath = gtk_tree_model_get_path(MODEL(dive_list), newiter);
 | 
				
			||||||
	gtk_tree_view_expand_to_path(GTK_TREE_VIEW(dive_list.tree_view), treepath);
 | 
						gtk_tree_view_expand_to_path(GTK_TREE_VIEW(dive_list.tree_view), treepath);
 | 
				
			||||||
	dive = get_dive(idx);
 | 
						dive = get_dive(idx);
 | 
				
			||||||
	/* we don't need the return value - everything is hooked up in the function */
 | 
						/* we don't need the return value - everything is hooked up in the function */
 | 
				
			||||||
| 
						 | 
					@ -1336,17 +1338,17 @@ static void insert_trip_before(GtkTreePath *path)
 | 
				
			||||||
	struct dive *dive, *prev_dive, *new_divetrip;
 | 
						struct dive *dive, *prev_dive, *new_divetrip;
 | 
				
			||||||
	int idx, nr, i;
 | 
						int idx, nr, i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gtk_tree_model_get_iter(TREEMODEL(dive_list), &iter, path);
 | 
						gtk_tree_model_get_iter(MODEL(dive_list), &iter, path);
 | 
				
			||||||
	prev_path = gtk_tree_path_copy(path);
 | 
						prev_path = gtk_tree_path_copy(path);
 | 
				
			||||||
	if (!gtk_tree_path_prev(prev_path) ||
 | 
						if (!gtk_tree_path_prev(prev_path) ||
 | 
				
			||||||
	    !gtk_tree_model_iter_parent(TREEMODEL(dive_list), &parent, &iter))
 | 
						    !gtk_tree_model_iter_parent(MODEL(dive_list), &parent, &iter))
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	gtk_tree_model_get_iter(TREEMODEL(dive_list), &prev_iter, prev_path);
 | 
						gtk_tree_model_get_iter(MODEL(dive_list), &prev_iter, prev_path);
 | 
				
			||||||
	gtk_tree_model_get(TREEMODEL(dive_list), &prev_iter, DIVE_INDEX, &idx, -1);
 | 
						gtk_tree_model_get(MODEL(dive_list), &prev_iter, DIVE_INDEX, &idx, -1);
 | 
				
			||||||
	prev_dive = get_dive(idx);
 | 
						prev_dive = get_dive(idx);
 | 
				
			||||||
	gtk_tree_store_insert_after(TREESTORE(dive_list), &newparent, NULL, &parent);
 | 
						gtk_tree_store_insert_after(STORE(dive_list), &newparent, NULL, &parent);
 | 
				
			||||||
	copy_tree_node(&parent, &newparent);
 | 
						copy_tree_node(&parent, &newparent);
 | 
				
			||||||
	gtk_tree_model_get(TREEMODEL(dive_list), &iter, DIVE_INDEX, &idx, -1);
 | 
						gtk_tree_model_get(MODEL(dive_list), &iter, DIVE_INDEX, &idx, -1);
 | 
				
			||||||
	dive = get_dive(idx);
 | 
						dive = get_dive(idx);
 | 
				
			||||||
	/* make sure that the time_t of the previous divetrip is correct before
 | 
						/* make sure that the time_t of the previous divetrip is correct before
 | 
				
			||||||
	 * inserting a new one */
 | 
						 * inserting a new one */
 | 
				
			||||||
| 
						 | 
					@ -1358,11 +1360,11 @@ static void insert_trip_before(GtkTreePath *path)
 | 
				
			||||||
	/* in order for the data structures to stay consistent we need to walk from
 | 
						/* in order for the data structures to stay consistent we need to walk from
 | 
				
			||||||
	 * the last child backwards to this one. The easiest way seems to be to do
 | 
						 * the last child backwards to this one. The easiest way seems to be to do
 | 
				
			||||||
	 * this with the nth iterator API */
 | 
						 * this with the nth iterator API */
 | 
				
			||||||
	nr = gtk_tree_model_iter_n_children(TREEMODEL(dive_list), &parent);
 | 
						nr = gtk_tree_model_iter_n_children(MODEL(dive_list), &parent);
 | 
				
			||||||
	for (i = nr - 1; i >= 0; i--) {
 | 
						for (i = nr - 1; i >= 0; i--) {
 | 
				
			||||||
		gtk_tree_model_iter_nth_child(TREEMODEL(dive_list), &nextsibling, &parent, i);
 | 
							gtk_tree_model_iter_nth_child(MODEL(dive_list), &nextsibling, &parent, i);
 | 
				
			||||||
		treepath = gtk_tree_model_get_path(TREEMODEL(dive_list), &nextsibling);
 | 
							treepath = gtk_tree_model_get_path(MODEL(dive_list), &nextsibling);
 | 
				
			||||||
		gtk_tree_model_get(TREEMODEL(dive_list), &nextsibling, DIVE_INDEX, &idx, -1);
 | 
							gtk_tree_model_get(MODEL(dive_list), &nextsibling, DIVE_INDEX, &idx, -1);
 | 
				
			||||||
		dive = get_dive(idx);
 | 
							dive = get_dive(idx);
 | 
				
			||||||
		dive->divetrip = new_divetrip;
 | 
							dive->divetrip = new_divetrip;
 | 
				
			||||||
		if (dive->when < dive->divetrip->when)
 | 
							if (dive->when < dive->divetrip->when)
 | 
				
			||||||
| 
						 | 
					@ -1372,7 +1374,7 @@ static void insert_trip_before(GtkTreePath *path)
 | 
				
			||||||
			/* we copied the dive we were called with; we are done */
 | 
								/* we copied the dive we were called with; we are done */
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	treepath = gtk_tree_model_get_path(TREEMODEL(dive_list), &newparent);
 | 
						treepath = gtk_tree_model_get_path(MODEL(dive_list), &newparent);
 | 
				
			||||||
	gtk_tree_view_expand_to_path(GTK_TREE_VIEW(dive_list.tree_view), treepath);
 | 
						gtk_tree_view_expand_to_path(GTK_TREE_VIEW(dive_list.tree_view), treepath);
 | 
				
			||||||
#ifdef DEBUG_TRIP
 | 
					#ifdef DEBUG_TRIP
 | 
				
			||||||
	dump_trip_list();
 | 
						dump_trip_list();
 | 
				
			||||||
| 
						 | 
					@ -1395,30 +1397,30 @@ static void remove_from_trip_cb(GtkWidget *menuitem, GtkTreePath *path)
 | 
				
			||||||
	struct dive *dive;
 | 
						struct dive *dive;
 | 
				
			||||||
	int idx;
 | 
						int idx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gtk_tree_model_get_iter(TREEMODEL(dive_list), &iter, path);
 | 
						gtk_tree_model_get_iter(MODEL(dive_list), &iter, path);
 | 
				
			||||||
	if (!gtk_tree_model_iter_parent(TREEMODEL(dive_list), &parent, &iter))
 | 
						if (!gtk_tree_model_iter_parent(MODEL(dive_list), &parent, &iter))
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* if this isn't the last dive in a trip we simply split the trip
 | 
						/* if this isn't the last dive in a trip we simply split the trip
 | 
				
			||||||
	   in two right after this dive */
 | 
						   in two right after this dive */
 | 
				
			||||||
	nextpath = gtk_tree_path_copy(path);
 | 
						nextpath = gtk_tree_path_copy(path);
 | 
				
			||||||
	gtk_tree_path_next(nextpath);
 | 
						gtk_tree_path_next(nextpath);
 | 
				
			||||||
	if (gtk_tree_model_get_iter(TREEMODEL(dive_list), &newiter, nextpath))
 | 
						if (gtk_tree_model_get_iter(MODEL(dive_list), &newiter, nextpath))
 | 
				
			||||||
		insert_trip_before(nextpath);
 | 
							insert_trip_before(nextpath);
 | 
				
			||||||
	/* now create a new node as sibling right after the current parent */
 | 
						/* now create a new node as sibling right after the current parent */
 | 
				
			||||||
	gtk_tree_store_insert_after(TREESTORE(dive_list), &newiter, NULL, &parent);
 | 
						gtk_tree_store_insert_after(STORE(dive_list), &newiter, NULL, &parent);
 | 
				
			||||||
	copy_tree_node(&iter, &newiter);
 | 
						copy_tree_node(&iter, &newiter);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gtk_tree_model_get(TREEMODEL(dive_list), &iter, DIVE_INDEX, &idx, -1);
 | 
						gtk_tree_model_get(MODEL(dive_list), &iter, DIVE_INDEX, &idx, -1);
 | 
				
			||||||
	dive = get_dive(idx);
 | 
						dive = get_dive(idx);
 | 
				
			||||||
	if (dive->selected) {
 | 
						if (dive->selected) {
 | 
				
			||||||
		GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
 | 
							GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
 | 
				
			||||||
		gtk_tree_selection_select_iter(selection, &newiter);
 | 
							gtk_tree_selection_select_iter(selection, &newiter);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	gtk_tree_store_remove(TREESTORE(dive_list), &iter);
 | 
						gtk_tree_store_remove(STORE(dive_list), &iter);
 | 
				
			||||||
	/* if this was the last dive on the trip, remove the trip */
 | 
						/* if this was the last dive on the trip, remove the trip */
 | 
				
			||||||
	if (! gtk_tree_model_iter_has_child(TREEMODEL(dive_list), &parent)) {
 | 
						if (! gtk_tree_model_iter_has_child(MODEL(dive_list), &parent)) {
 | 
				
			||||||
		gtk_tree_store_remove(TREESTORE(dive_list), &parent);
 | 
							gtk_tree_store_remove(STORE(dive_list), &parent);
 | 
				
			||||||
		delete_trip(FIND_TRIP(dive->divetrip->when));
 | 
							delete_trip(FIND_TRIP(dive->divetrip->when));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	dive->tripflag = NO_TRIP;
 | 
						dive->tripflag = NO_TRIP;
 | 
				
			||||||
| 
						 | 
					@ -1435,16 +1437,16 @@ void remove_trip_cb(GtkWidget *menuitem, GtkTreePath *trippath)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* what a pain - we can't just move the nodes, we have to
 | 
						/* what a pain - we can't just move the nodes, we have to
 | 
				
			||||||
	 * create new ones and delete the existing ones instead */
 | 
						 * create new ones and delete the existing ones instead */
 | 
				
			||||||
	gtk_tree_model_get_iter(TREEMODEL(dive_list), &parent, trippath);
 | 
						gtk_tree_model_get_iter(MODEL(dive_list), &parent, trippath);
 | 
				
			||||||
	childpath = gtk_tree_path_copy(trippath);
 | 
						childpath = gtk_tree_path_copy(trippath);
 | 
				
			||||||
	gtk_tree_path_down(childpath);
 | 
						gtk_tree_path_down(childpath);
 | 
				
			||||||
	for (;;) {
 | 
						for (;;) {
 | 
				
			||||||
		if( ! gtk_tree_model_get_iter(TREEMODEL(dive_list), &child, childpath))
 | 
							if( ! gtk_tree_model_get_iter(MODEL(dive_list), &child, childpath))
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		gtk_tree_store_insert_after(TREESTORE(dive_list), &newiter, NULL, lastiter);
 | 
							gtk_tree_store_insert_after(STORE(dive_list), &newiter, NULL, lastiter);
 | 
				
			||||||
		copy_tree_node(&child, &newiter);
 | 
							copy_tree_node(&child, &newiter);
 | 
				
			||||||
		/* we need to track what was selected */
 | 
							/* we need to track what was selected */
 | 
				
			||||||
		gtk_tree_model_get(TREEMODEL(dive_list), &child, DIVE_INDEX, &idx, -1);
 | 
							gtk_tree_model_get(MODEL(dive_list), &child, DIVE_INDEX, &idx, -1);
 | 
				
			||||||
		dive = get_dive(idx);
 | 
							dive = get_dive(idx);
 | 
				
			||||||
		if (dive->selected)
 | 
							if (dive->selected)
 | 
				
			||||||
			gtk_tree_selection_select_iter(selection, &newiter);
 | 
								gtk_tree_selection_select_iter(selection, &newiter);
 | 
				
			||||||
| 
						 | 
					@ -1453,11 +1455,11 @@ void remove_trip_cb(GtkWidget *menuitem, GtkTreePath *trippath)
 | 
				
			||||||
			dive_trip = dive->divetrip;
 | 
								dive_trip = dive->divetrip;
 | 
				
			||||||
		dive->divetrip = NULL;
 | 
							dive->divetrip = NULL;
 | 
				
			||||||
		/* this removes the child - now childpath points to the next child */
 | 
							/* this removes the child - now childpath points to the next child */
 | 
				
			||||||
		gtk_tree_store_remove(TREESTORE(dive_list), &child);
 | 
							gtk_tree_store_remove(STORE(dive_list), &child);
 | 
				
			||||||
		lastiter = &newiter;
 | 
							lastiter = &newiter;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	/* finally, remove the trip */
 | 
						/* finally, remove the trip */
 | 
				
			||||||
	gtk_tree_store_remove(TREESTORE(dive_list), &parent);
 | 
						gtk_tree_store_remove(STORE(dive_list), &parent);
 | 
				
			||||||
	delete_trip(FIND_TRIP(dive_trip->when));
 | 
						delete_trip(FIND_TRIP(dive_trip->when));
 | 
				
			||||||
	free(dive_trip);
 | 
						free(dive_trip);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1466,7 +1468,7 @@ void merge_trips_cb(GtkWidget *menuitem, GtkTreePath *trippath)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	GtkTreePath *prevpath;
 | 
						GtkTreePath *prevpath;
 | 
				
			||||||
	GtkTreeIter thistripiter, prevtripiter, newiter, iter;
 | 
						GtkTreeIter thistripiter, prevtripiter, newiter, iter;
 | 
				
			||||||
	GtkTreeModel *tm = TREEMODEL(dive_list);
 | 
						GtkTreeModel *tm = MODEL(dive_list);
 | 
				
			||||||
	GList *trip, *prevtrip;
 | 
						GList *trip, *prevtrip;
 | 
				
			||||||
	time_t when;
 | 
						time_t when;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1481,15 +1483,15 @@ void merge_trips_cb(GtkWidget *menuitem, GtkTreePath *trippath)
 | 
				
			||||||
	prevtrip = find_matching_trip(when);
 | 
						prevtrip = find_matching_trip(when);
 | 
				
			||||||
	while (gtk_tree_model_iter_children(tm, &iter, &thistripiter)) {
 | 
						while (gtk_tree_model_iter_children(tm, &iter, &thistripiter)) {
 | 
				
			||||||
		int idx;
 | 
							int idx;
 | 
				
			||||||
		gtk_tree_store_insert_before(TREESTORE(dive_list), &newiter, &prevtripiter, NULL);
 | 
							gtk_tree_store_insert_before(STORE(dive_list), &newiter, &prevtripiter, NULL);
 | 
				
			||||||
		idx = copy_tree_node(&iter, &newiter);
 | 
							idx = copy_tree_node(&iter, &newiter);
 | 
				
			||||||
		gtk_tree_store_remove(TREESTORE(dive_list), &iter);
 | 
							gtk_tree_store_remove(STORE(dive_list), &iter);
 | 
				
			||||||
		get_dive(idx)->divetrip = DIVE_TRIP(prevtrip);
 | 
							get_dive(idx)->divetrip = DIVE_TRIP(prevtrip);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	update_trip_timestamp(&prevtripiter, DIVE_TRIP(prevtrip));
 | 
						update_trip_timestamp(&prevtripiter, DIVE_TRIP(prevtrip));
 | 
				
			||||||
	free(DIVE_TRIP(trip));
 | 
						free(DIVE_TRIP(trip));
 | 
				
			||||||
	delete_trip(trip);
 | 
						delete_trip(trip);
 | 
				
			||||||
	gtk_tree_store_remove(TREESTORE(dive_list), &thistripiter);
 | 
						gtk_tree_store_remove(STORE(dive_list), &thistripiter);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void popup_divelist_menu(GtkTreeView *tree_view, GtkTreeModel *model, int button, GdkEventButton *event)
 | 
					static void popup_divelist_menu(GtkTreeView *tree_view, GtkTreeModel *model, int button, GdkEventButton *event)
 | 
				
			||||||
| 
						 | 
					@ -1503,8 +1505,8 @@ static void popup_divelist_menu(GtkTreeView *tree_view, GtkTreeModel *model, int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!gtk_tree_view_get_path_at_pos(tree_view, event->x, event->y, &path, NULL, NULL, NULL))
 | 
						if (!gtk_tree_view_get_path_at_pos(tree_view, event->x, event->y, &path, NULL, NULL, NULL))
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	gtk_tree_model_get_iter(TREEMODEL(dive_list), &iter, path);
 | 
						gtk_tree_model_get_iter(MODEL(dive_list), &iter, path);
 | 
				
			||||||
	gtk_tree_model_get(TREEMODEL(dive_list), &iter, DIVE_INDEX, &idx, -1);
 | 
						gtk_tree_model_get(MODEL(dive_list), &iter, DIVE_INDEX, &idx, -1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	menu = gtk_menu_new();
 | 
						menu = gtk_menu_new();
 | 
				
			||||||
	menuitem = gtk_image_menu_item_new_with_label("Add dive");
 | 
						menuitem = gtk_image_menu_item_new_with_label("Add dive");
 | 
				
			||||||
| 
						 | 
					@ -1520,8 +1522,8 @@ static void popup_divelist_menu(GtkTreeView *tree_view, GtkTreeModel *model, int
 | 
				
			||||||
		gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
 | 
							gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
 | 
				
			||||||
		prevpath = gtk_tree_path_copy(path);
 | 
							prevpath = gtk_tree_path_copy(path);
 | 
				
			||||||
		if (gtk_tree_path_prev(prevpath) &&
 | 
							if (gtk_tree_path_prev(prevpath) &&
 | 
				
			||||||
		    gtk_tree_model_get_iter(TREEMODEL(dive_list), &previter, prevpath)) {
 | 
							    gtk_tree_model_get_iter(MODEL(dive_list), &previter, prevpath)) {
 | 
				
			||||||
			gtk_tree_model_get(TREEMODEL(dive_list), &previter, DIVE_INDEX, &previdx, -1);
 | 
								gtk_tree_model_get(MODEL(dive_list), &previter, DIVE_INDEX, &previdx, -1);
 | 
				
			||||||
			if (previdx < 0) {
 | 
								if (previdx < 0) {
 | 
				
			||||||
				menuitem = gtk_menu_item_new_with_label("Merge trip with previous");
 | 
									menuitem = gtk_menu_item_new_with_label("Merge trip with previous");
 | 
				
			||||||
				g_signal_connect(menuitem, "activate", G_CALLBACK(merge_trips_cb), path);
 | 
									g_signal_connect(menuitem, "activate", G_CALLBACK(merge_trips_cb), path);
 | 
				
			||||||
| 
						 | 
					@ -1577,14 +1579,14 @@ static void popup_divelist_menu(GtkTreeView *tree_view, GtkTreeModel *model, int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void popup_menu_cb(GtkTreeView *tree_view, gpointer userdata)
 | 
					static void popup_menu_cb(GtkTreeView *tree_view, gpointer userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	popup_divelist_menu(tree_view, GTK_TREE_MODEL(dive_list.model), 0, NULL);
 | 
						popup_divelist_menu(tree_view, MODEL(dive_list), 0, NULL);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static gboolean button_press_cb(GtkWidget *treeview, GdkEventButton *event, gpointer userdata)
 | 
					static gboolean button_press_cb(GtkWidget *treeview, GdkEventButton *event, gpointer userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	/* Right-click? Bring up the menu */
 | 
						/* Right-click? Bring up the menu */
 | 
				
			||||||
	if (event->type == GDK_BUTTON_PRESS  &&  event->button == 3) {
 | 
						if (event->type == GDK_BUTTON_PRESS  &&  event->button == 3) {
 | 
				
			||||||
		popup_divelist_menu(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(dive_list.model), 3, event);
 | 
							popup_divelist_menu(GTK_TREE_VIEW(treeview), MODEL(dive_list), 3, event);
 | 
				
			||||||
		return TRUE;
 | 
							return TRUE;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return FALSE;
 | 
						return FALSE;
 | 
				
			||||||
| 
						 | 
					@ -1675,9 +1677,9 @@ static void sort_column_change_cb(GtkTreeSortable *treeview, gpointer data)
 | 
				
			||||||
	if (dive_list.model != currentmodel) {
 | 
						if (dive_list.model != currentmodel) {
 | 
				
			||||||
		GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
 | 
							GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		gtk_tree_view_set_model(GTK_TREE_VIEW(dive_list.tree_view), GTK_TREE_MODEL(dive_list.model));
 | 
							gtk_tree_view_set_model(GTK_TREE_VIEW(dive_list.tree_view), MODEL(dive_list));
 | 
				
			||||||
		update_column_and_order(colid);
 | 
							update_column_and_order(colid);
 | 
				
			||||||
		gtk_tree_model_foreach(GTK_TREE_MODEL(dive_list.model), set_selected, selection);
 | 
							gtk_tree_model_foreach(MODEL(dive_list), set_selected, selection);
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		if (order != sortorder[colid]) {
 | 
							if (order != sortorder[colid]) {
 | 
				
			||||||
			update_column_and_order(colid);
 | 
								update_column_and_order(colid);
 | 
				
			||||||
| 
						 | 
					@ -1722,7 +1724,7 @@ GtkWidget *dive_list_create(void)
 | 
				
			||||||
				G_TYPE_STRING			/* Location */
 | 
									G_TYPE_STRING			/* Location */
 | 
				
			||||||
				);
 | 
									);
 | 
				
			||||||
	dive_list.model = dive_list.treemodel;
 | 
						dive_list.model = dive_list.treemodel;
 | 
				
			||||||
	dive_list.tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(dive_list.model));
 | 
						dive_list.tree_view = gtk_tree_view_new_with_model(TREEMODEL(dive_list));
 | 
				
			||||||
	set_divelist_font(divelist_font);
 | 
						set_divelist_font(divelist_font);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
 | 
						selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dive_list.tree_view));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue