From 1b4a527e848a686aff4d182347b8c113646c5e6f Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Thu, 17 Apr 2008 20:03:49 +0000 Subject: [PATCH] Add some wrappers in view_dir.c and simplify even more. --- src/typedefs.h | 1 - src/view_dir.c | 37 ++++++++++++++++++++++++++++++++++--- src/view_dir.h | 4 ++-- src/view_dir_list.c | 12 +++++------- src/view_dir_list.h | 4 ++++ src/view_dir_tree.c | 11 +++++------ src/view_dir_tree.h | 5 +++++ 7 files changed, 55 insertions(+), 19 deletions(-) diff --git a/src/typedefs.h b/src/typedefs.h index 7271c2774..f4df5f363 100644 --- a/src/typedefs.h +++ b/src/typedefs.h @@ -532,7 +532,6 @@ struct _ViewDir { DirViewType type; gpointer info; - void (*widget_destroy_cb)(GtkWidget *widget, gpointer data); GtkWidget *widget; GtkWidget *view; diff --git a/src/view_dir.c b/src/view_dir.c index b3d17d4ff..d61ef0394 100644 --- a/src/view_dir.c +++ b/src/view_dir.c @@ -30,7 +30,7 @@ GtkRadioActionEntry menu_view_dir_radio_entries[] = { { "FolderTree", NULL, N_("Tr_ee"), "T", NULL, DIRVIEW_TREE }, }; -void vd_destroy_cb(GtkWidget *widget, gpointer data) +static void vd_destroy_cb(GtkWidget *widget, gpointer data) { ViewDir *vd = data; @@ -41,8 +41,12 @@ void vd_destroy_cb(GtkWidget *widget, gpointer data) gtk_widget_destroy(vd->popup); } - if (vd->widget_destroy_cb) vd->widget_destroy_cb(widget, data); - + switch(vd->type) + { + case DIRVIEW_LIST: vdlist_destroy_cb(widget, data); break; + case DIRVIEW_TREE: vdtree_destroy_cb(widget, data); break; + } + if (vd->pf) folder_icons_free(vd->pf); if (vd->drop_list) filelist_free(vd->drop_list); @@ -918,3 +922,30 @@ gint vd_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data) return FALSE; } +gint vd_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) +{ + ViewDir *vd = data; + gint ret = FALSE; + + switch(vd->type) + { + case DIRVIEW_LIST: ret = vdlist_press_key_cb(widget, event, data); break; + case DIRVIEW_TREE: ret = vdtree_press_key_cb(widget, event, data); break; + } + + return ret; +} + +gint vd_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data) +{ + ViewDir *vd = data; + gint ret = FALSE; + + switch(vd->type) + { + case DIRVIEW_LIST: ret = vdlist_press_cb(widget, bevent, data); break; + case DIRVIEW_TREE: ret = vdtree_press_cb(widget, bevent, data); break; + } + + return ret; +} diff --git a/src/view_dir.h b/src/view_dir.h index f33d381ce..f31c38149 100644 --- a/src/view_dir.h +++ b/src/view_dir.h @@ -22,8 +22,6 @@ enum { extern GtkRadioActionEntry menu_view_dir_radio_entries[2]; -void vd_destroy(ViewDir *vd); - ViewDir *vd_new(DirViewType type, const gchar *path); void vd_set_select_func(ViewDir *vdl, void (*func)(ViewDir *vdl, const gchar *path, gpointer data), gpointer data); @@ -51,6 +49,8 @@ void vd_activate_cb(GtkTreeView *tview, GtkTreePath *tpath, GtkTreeViewColumn *c 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); +gint vd_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data); +gint vd_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data); #endif diff --git a/src/view_dir_list.c b/src/view_dir_list.c index c3c8d4579..a1c3ab884 100644 --- a/src/view_dir_list.c +++ b/src/view_dir_list.c @@ -284,7 +284,7 @@ void vdlist_refresh(ViewDir *vd) g_free(path); } -static gint vdlist_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) +gint vdlist_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) { ViewDir *vd = data; GtkTreePath *tpath; @@ -317,7 +317,7 @@ static gint vdlist_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer return TRUE; } -static gint vdlist_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data) +gint vdlist_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data) { ViewDir *vd = data; GtkTreePath *tpath; @@ -349,7 +349,7 @@ static gint vdlist_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer return TRUE; } -static void vdlist_destroy_cb(GtkWidget *widget, gpointer data) +void vdlist_destroy_cb(GtkWidget *widget, gpointer data) { ViewDir *vd = data; @@ -368,7 +368,6 @@ ViewDir *vdlist_new(ViewDir *vd, const gchar *path) vd->info = g_new0(ViewDirInfoList, 1); vd->type = DIRVIEW_LIST; - vd->widget_destroy_cb = vdlist_destroy_cb; VDLIST_INFO(vd, list) = NULL; @@ -379,7 +378,6 @@ ViewDir *vdlist_new(ViewDir *vd, const gchar *path) gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(vd->view), FALSE); gtk_tree_view_set_enable_search(GTK_TREE_VIEW(vd->view), FALSE); g_signal_connect(G_OBJECT(vd->view), "row_activated", - G_CALLBACK(vd_activate_cb), vd); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(vd->view)); @@ -401,14 +399,14 @@ ViewDir *vdlist_new(ViewDir *vd, const gchar *path) gtk_tree_view_append_column(GTK_TREE_VIEW(vd->view), column); g_signal_connect(G_OBJECT(vd->view), "key_press_event", - G_CALLBACK(vdlist_press_key_cb), vd); + G_CALLBACK(vd_press_key_cb), vd); gtk_container_add(GTK_CONTAINER(vd->widget), vd->view); gtk_widget_show(vd->view); vd_dnd_init(vd); g_signal_connect(G_OBJECT(vd->view), "button_press_event", - G_CALLBACK(vdlist_press_cb), vd); + G_CALLBACK(vd_press_cb), vd); g_signal_connect(G_OBJECT(vd->view), "button_release_event", G_CALLBACK(vd_release_cb), vd); diff --git a/src/view_dir_list.h b/src/view_dir_list.h index 2782aab0e..71380e451 100644 --- a/src/view_dir_list.h +++ b/src/view_dir_list.h @@ -26,6 +26,10 @@ gint vdlist_find_row(ViewDir *vd, FileData *fd, GtkTreeIter *iter); void vdlist_rename_by_row(ViewDir *vd, FileData *fd); FileData *vdlist_row_by_path(ViewDir *vd, const gchar *path, gint *row); +gint vdlist_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data); +gint vdlist_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data); + +void vdlist_destroy_cb(GtkWidget *widget, gpointer data); #endif diff --git a/src/view_dir_tree.c b/src/view_dir_tree.c index 15970f8b9..54e0a99ff 100644 --- a/src/view_dir_tree.c +++ b/src/view_dir_tree.c @@ -738,7 +738,7 @@ const gchar *vdtree_row_get_path(ViewDir *vd, gint row) *---------------------------------------------------------------------------- */ -static gint vdtree_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) +gint vdtree_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) { ViewDir *vd = data; GtkTreePath *tpath; @@ -809,7 +809,7 @@ static gint vdtree_clicked_on_expander(GtkTreeView *treeview, GtkTreePath *tpath return FALSE; } -static gint vdtree_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data) +gint vdtree_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data) { ViewDir *vd = data; GtkTreePath *tpath; @@ -918,7 +918,7 @@ static gboolean vdtree_destroy_node_cb(GtkTreeModel *store, GtkTreePath *tpath, return FALSE; } -static void vdtree_destroy_cb(GtkWidget *widget, gpointer data) +void vdtree_destroy_cb(GtkWidget *widget, gpointer data) { ViewDir *vd = data; GtkTreeModel *store; @@ -940,7 +940,6 @@ ViewDir *vdtree_new(ViewDir *vd, const gchar *path) vd->info = g_new0(ViewDirInfoTree, 1); vd->type = DIRVIEW_TREE; - vd->widget_destroy_cb = vdtree_destroy_cb; VDTREE_INFO(vd, drop_expand_id) = -1; @@ -987,7 +986,7 @@ ViewDir *vdtree_new(ViewDir *vd, const gchar *path) gtk_tree_view_append_column(GTK_TREE_VIEW(vd->view), column); g_signal_connect(G_OBJECT(vd->view), "key_press_event", - G_CALLBACK(vdtree_press_key_cb), vd); + G_CALLBACK(vd_press_key_cb), vd); gtk_container_add(GTK_CONTAINER(vd->widget), vd->view); gtk_widget_show(vd->view); @@ -999,7 +998,7 @@ ViewDir *vdtree_new(ViewDir *vd, const gchar *path) vd_dnd_init(vd); g_signal_connect(G_OBJECT(vd->view), "button_press_event", - G_CALLBACK(vdtree_press_cb), vd); + G_CALLBACK(vd_press_cb), vd); g_signal_connect(G_OBJECT(vd->view), "button_release_event", G_CALLBACK(vd_release_cb), vd); diff --git a/src/view_dir_tree.h b/src/view_dir_tree.h index 6fd5a1771..d72673ced 100644 --- a/src/view_dir_tree.h +++ b/src/view_dir_tree.h @@ -36,5 +36,10 @@ void vdtree_rename_by_data(ViewDir *vd, FileData *fd); void vdtree_dnd_drop_expand_cancel(ViewDir *vd); void vdtree_dnd_drop_expand(ViewDir *vd); +gint vdtree_press_key_cb(GtkWidget *widget, GdkEventKey *event, gpointer data); +gint vdtree_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data); + +void vdtree_destroy_cb(GtkWidget *widget, gpointer data); + #endif