comparison src/view_dir.c @ 384:392dd6541d51

Merge parts of view_dir_list/tree constructors/destructors to view_dir.
author zas_
date Wed, 16 Apr 2008 16:54:38 +0000
parents 499d7ba62261
children 5186f8e38cb8
comparison
equal deleted inserted replaced
383:499d7ba62261 384:392dd6541d51
11 11
12 #include "main.h" 12 #include "main.h"
13 #include "view_dir.h" 13 #include "view_dir.h"
14 14
15 #include "filelist.h" 15 #include "filelist.h"
16 #include "layout_util.h"
16 #include "ui_menu.h" 17 #include "ui_menu.h"
17 #include "utilops.h" 18 #include "utilops.h"
18 #include "view_dir_list.h" 19 #include "view_dir_list.h"
19 #include "view_dir_tree.h" 20 #include "view_dir_tree.h"
20 21
21 GtkRadioActionEntry menu_view_dir_radio_entries[] = { 22 GtkRadioActionEntry menu_view_dir_radio_entries[] = {
22 { "FolderList", NULL, N_("List"), "<meta>L", NULL, DIRVIEW_LIST }, 23 { "FolderList", NULL, N_("List"), "<meta>L", NULL, DIRVIEW_LIST },
23 { "FolderTree", NULL, N_("Tr_ee"), "<control>T", NULL, DIRVIEW_TREE }, 24 { "FolderTree", NULL, N_("Tr_ee"), "<control>T", NULL, DIRVIEW_TREE },
24 }; 25 };
25 26
27 void vd_destroy_cb(GtkWidget *widget, gpointer data)
28 {
29 ViewDir *vd = data;
30
31 if (vd->popup)
32 {
33 g_signal_handlers_disconnect_matched(G_OBJECT(vd->popup), G_SIGNAL_MATCH_DATA,
34 0, 0, 0, NULL, vd);
35 gtk_widget_destroy(vd->popup);
36 }
37
38 if (vd->widget_destroy_cb) vd->widget_destroy_cb(widget, data);
39
40 if (vd->pf) folder_icons_free(vd->pf);
41 if (vd->drop_list) filelist_free(vd->drop_list);
42
43 if (vd->path) g_free(vd->path);
44 if (vd->info) g_free(vd->info);
45
46 g_free(vd);
47 }
48
26 ViewDir *vd_new(DirViewType type, const gchar *path) 49 ViewDir *vd_new(DirViewType type, const gchar *path)
27 { 50 {
28 ViewDir *vd = NULL; 51 ViewDir *vd = g_new0(ViewDir, 1);
52
53 vd->path = NULL;
54 vd->click_fd = NULL;
55
56 vd->drop_fd = NULL;
57 vd->drop_list = NULL;
58 vd->drop_scroll_id = -1;
59 vd->drop_list = NULL;
60
61 vd->popup = NULL;
62 vd->pf = NULL;
63
64 vd->widget = gtk_scrolled_window_new(NULL, NULL);
65 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(vd->widget), GTK_SHADOW_IN);
66 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(vd->widget),
67 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
29 68
30 switch(type) 69 switch(type)
31 { 70 {
32 case DIRVIEW_LIST: vd = vdlist_new(path); break; 71 case DIRVIEW_LIST: vd = vdlist_new(vd, path); break;
33 case DIRVIEW_TREE: vd = vdtree_new(path); break; 72 case DIRVIEW_TREE: vd = vdtree_new(vd, path); break;
34 } 73 }
74
75 g_signal_connect(G_OBJECT(vd->widget), "destroy",
76 G_CALLBACK(vd_destroy_cb), vd);
77
78 vd->pf = folder_icons_new();
35 79
36 return vd; 80 return vd;
37 } 81 }
38 82
39 void vd_set_select_func(ViewDir *vd, 83 void vd_set_select_func(ViewDir *vd,