diff options
author | Lubomir I. Ivanov <neolit123@gmail.com> | 2013-01-23 17:48:59 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-01-23 08:49:10 -0800 |
commit | b1db60ba4795638192c0dea93670d858d4178528 (patch) | |
tree | f64a12f1a80ce338e7aa8552ccb8aefc9c96c061 /divelist.c | |
parent | c149921df4d8ddd8d0df8b44cc7962bec980712d (diff) | |
download | subsurface-b1db60ba4795638192c0dea93670d858d4178528.tar.gz |
divelist.c:icon_click_cb(): check if a GtkTreePath is found
In icon_click_cb() we need to check if a correct GtkTreePath is found
(using gtk_tree_view_get_path_at_pos()) before requesting a GtkTreeIter
for it.
Without this patch a bug is reproducible, where the user may click
outside of the GtkTreeView entries, but still in the GtkTreeView -
e.g. when only one entry is available.
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'divelist.c')
-rw-r--r-- | divelist.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/divelist.c b/divelist.c index d033f93cf..bd3897dca 100644 --- a/divelist.c +++ b/divelist.c @@ -1700,15 +1700,15 @@ static void show_gps_location_cb(GtkWidget *menuitem, struct dive *dive) gboolean icon_click_cb(GtkWidget *w, GdkEventButton *event, gpointer data) { #if HAVE_OSM_GPS_MAP - GtkTreePath *path; + GtkTreePath *path = NULL; GtkTreeIter iter; GtkTreeViewColumn *col; int idx; struct dive *dive; /* left click ? */ - if (event->button == 1) { - gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(dive_list.tree_view), event->x, event->y, &path, &col, NULL, NULL); + if (event->button == 1 && + gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(dive_list.tree_view), event->x, event->y, &path, &col, NULL, NULL)) { /* is it the icon column ? (we passed the correct column in when registering the callback) */ if (col == data) { gtk_tree_model_get_iter(MODEL(dive_list), &iter, path); @@ -1717,7 +1717,8 @@ gboolean icon_click_cb(GtkWidget *w, GdkEventButton *event, gpointer data) if (dive && dive_has_location(dive)) show_gps_location(dive); } - gtk_tree_path_free(path); + if (path) + gtk_tree_path_free(path); } #endif /* keep processing the click */ |