I made some assumptions here i hope correct.
"cell-background-set", set, NULL);
}
+gint vd_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
+{
+ ViewDir *vd = data;
+ GtkTreePath *tpath;
+ GtkTreeIter iter;
+ FileData *fd = NULL;
+
+ vd_color_set(vd, vd->click_fd, FALSE);
+
+ if (bevent->button != 1) return TRUE;
+
+ if ((bevent->x != 0 || bevent->y != 0) &&
+ gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), bevent->x, bevent->y,
+ &tpath, NULL, NULL, NULL))
+ {
+ GtkTreeModel *store;
+
+ store = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
+ gtk_tree_model_get_iter(store, &iter, tpath);
+ switch (vd->type)
+ {
+ case DIRVIEW_LIST:
+ gtk_tree_model_get(store, &iter, DIR_COLUMN_POINTER, &fd, -1);
+ break;
+ case DIRVIEW_TREE:
+ {
+ NodeData *nd;
+ gtk_tree_model_get(store, &iter, DIR_COLUMN_POINTER, &nd, -1);
+ fd = (nd) ? nd->fd : NULL;
+ };
+ break;
+ }
+
+ gtk_tree_path_free(tpath);
+ }
+
+ if (fd && vd->click_fd == fd)
+ {
+ vdlist_select_row(vd, vd->click_fd);
+ }
+
+ return TRUE;
+}
+
void vd_activate_cb(GtkTreeView *tview, GtkTreePath *tpath, GtkTreeViewColumn *column, gpointer data);
void vd_color_cb(GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data);
+gint vd_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data);
#endif
return TRUE;
}
-static gint vdlist_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
-{
- ViewDir *vd = data;
- GtkTreePath *tpath;
- GtkTreeIter iter;
- FileData *fd = NULL;
-
- vd_color_set(vd, vd->click_fd, FALSE);
-
- if (bevent->button != 1) return TRUE;
-
- if ((bevent->x != 0 || bevent->y != 0) &&
- gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), bevent->x, bevent->y,
- &tpath, NULL, NULL, NULL))
- {
- GtkTreeModel *store;
-
- store = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
- gtk_tree_model_get_iter(store, &iter, tpath);
- gtk_tree_model_get(store, &iter, DIR_COLUMN_POINTER, &fd, -1);
- gtk_tree_path_free(tpath);
- }
-
- if (fd && vd->click_fd == fd)
- {
- vdlist_select_row(vd, vd->click_fd);
- }
-
- return TRUE;
-}
-
static void vdlist_destroy_cb(GtkWidget *widget, gpointer data)
{
ViewDir *vd = data;
g_signal_connect(G_OBJECT(vd->view), "button_press_event",
G_CALLBACK(vdlist_press_cb), vd);
g_signal_connect(G_OBJECT(vd->view), "button_release_event",
- G_CALLBACK(vdlist_release_cb), vd);
+ G_CALLBACK(vd_release_cb), vd);
if (path) vdlist_set_path(vd, path);
return (bevent->button != 1);
}
-static gint vdtree_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
-{
- ViewDir *vd = data;
- GtkTreePath *tpath;
- GtkTreeIter iter;
- NodeData *nd = NULL;
-
- if (!vd->click_fd) return FALSE;
- vd_color_set(vd, vd->click_fd, FALSE);
-
- if (bevent->button != 1) return TRUE;
-
- if ((bevent->x != 0 || bevent->y != 0) &&
- gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(widget), bevent->x, bevent->y,
- &tpath, NULL, NULL, NULL))
- {
- GtkTreeModel *store;
-
- store = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
- gtk_tree_model_get_iter(store, &iter, tpath);
- gtk_tree_model_get(store, &iter, DIR_COLUMN_POINTER, &nd, -1);
- gtk_tree_path_free(tpath);
- }
-
- if (nd && vd->click_fd == nd->fd)
- {
- vdtree_select_row(vd, vd->click_fd);
- }
-
- return FALSE;
-}
-
static void vdtree_row_expanded(GtkTreeView *treeview, GtkTreeIter *iter, GtkTreePath *tpath, gpointer data)
{
ViewDir *vd = data;
g_signal_connect(G_OBJECT(vd->view), "button_press_event",
G_CALLBACK(vdtree_press_cb), vd);
g_signal_connect(G_OBJECT(vd->view), "button_release_event",
- G_CALLBACK(vdtree_release_cb), vd);
+ G_CALLBACK(vd_release_cb), vd);
vdtree_set_path(vd, path);