1 diff -urNd ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c gtk+-2.4.4/gtk/gtkfilesel.c
2 --- ../gtk+-2.4.4-r5/gtk+-2.4.4/gtk/gtkfilesel.c 2004-07-10 05:02:10.000000000 +0100
3 +++ gtk+-2.4.4/gtk/gtkfilesel.c 2004-09-13 13:40:09.000000000 +0100
5 #include "gtkprivate.h"
6 #include "gtkscrolledwindow.h"
8 +#include "gtksignal.h"
9 #include "gtktreeselection.h"
10 #include "gtktreeview.h"
13 #include "gtkmessagedialog.h"
15 #include "gtkeventbox.h"
16 +#include "gtkimage.h"
18 #undef GTK_DISABLE_DEPRECATED
19 #include "gtkoptionmenu.h"
32 GtkTreeViewColumn *column,
35 +static void gtk_file_selection_activate (GtkTreeView *tree_view,
37 + GtkTreeViewColumn *column,
38 + gpointer user_data);
40 static void gtk_file_selection_file_changed (GtkTreeSelection *selection,
42 static void gtk_file_selection_dir_activate (GtkTreeView *tree_view,
44 static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
45 static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
46 static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
47 +static void gtk_file_selection_style_set (GtkWidget *widget, GtkStyle *prev_style);
49 static void free_selected_names (GPtrArray *names);
53 object_class->destroy = gtk_file_selection_destroy;
54 widget_class->map = gtk_file_selection_map;
55 + widget_class->style_set = gtk_file_selection_style_set;
57 + gtk_widget_class_install_style_property (widget_class,
58 + g_param_spec_boolean ("show_fileops_default",
59 + _("Show fileop buttons by default"),
60 + _("Whether file operation buttons are shown by default"),
64 + gtk_widget_class_install_style_property (widget_class,
65 + g_param_spec_int ("border_width",
67 + _("Width of border around the main dialog area"),
74 static void gtk_file_selection_set_property (GObject *object,
76 gtk_widget_grab_default (widget);
82 +gtk_file_selection_style_set (GtkWidget *filesel,
83 + GtkStyle *prev_style)
85 + gboolean show_fileops;
88 + gtk_widget_style_get (filesel,
89 + "show_fileops_default",
95 + gtk_container_set_border_width (GTK_CONTAINER (filesel), border_width);
98 + gtk_file_selection_show_fileop_buttons (GTK_FILE_SELECTION (filesel));
100 + gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (filesel));
104 gtk_file_selection_init (GtkFileSelection *filesel)
106 @@ -674,17 +723,15 @@
108 /* The dialog-sized vertical box */
109 filesel->main_vbox = dialog->vbox;
110 - gtk_container_set_border_width (GTK_CONTAINER (filesel), 10);
112 /* The horizontal box containing create, rename etc. buttons */
113 filesel->button_area = gtk_hbutton_box_new ();
114 gtk_button_box_set_layout (GTK_BUTTON_BOX (filesel->button_area), GTK_BUTTONBOX_START);
115 - gtk_box_set_spacing (GTK_BOX (filesel->button_area), 0);
116 gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->button_area,
118 gtk_widget_show (filesel->button_area);
120 - gtk_file_selection_show_fileop_buttons (filesel);
121 + gtk_file_selection_style_set (GTK_WIDGET (filesel), NULL);
123 /* hbox for pulldown menu */
124 pulldown_hbox = gtk_hbox_new (TRUE, 5);
125 @@ -723,25 +770,32 @@
127 /* The directories list */
129 - model = gtk_list_store_new (1, G_TYPE_STRING);
130 + model = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN); /* MA */
131 filesel->dir_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
132 g_object_unref (model);
134 - column = gtk_tree_view_column_new_with_attributes (_("Folders"),
135 + column = gtk_tree_view_column_new_with_attributes (/*_("Folders")*/ NULL,
136 gtk_cell_renderer_text_new (),
139 label = gtk_label_new_with_mnemonic (_("Fol_ders"));
140 gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->dir_list);
141 gtk_widget_show (label);
142 - gtk_tree_view_column_set_widget (column, label);
144 + /* gtk_tree_view_column_set_widget (column, label); */
145 + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (filesel->dir_list), FALSE);
147 gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
148 gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->dir_list), column);
150 gtk_widget_set_size_request (filesel->dir_list,
151 DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
152 g_signal_connect (filesel->dir_list, "row_activated",
153 - G_CALLBACK (gtk_file_selection_dir_activate), filesel);
154 + G_CALLBACK (gtk_file_selection_activate), filesel);
156 + g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->dir_list)), "changed",
157 + G_CALLBACK (gtk_file_selection_file_changed), filesel);
160 /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list)); */
163 gtk_widget_show (filesel->dir_list);
164 gtk_widget_show (scrolled_win);
166 - /* The files list */
167 - model = gtk_list_store_new (1, G_TYPE_STRING);
168 - filesel->file_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));
169 - g_object_unref (model);
171 - column = gtk_tree_view_column_new_with_attributes (_("Files"),
172 - gtk_cell_renderer_text_new (),
173 - "text", FILE_COLUMN,
175 - label = gtk_label_new_with_mnemonic (_("_Files"));
176 - gtk_label_set_mnemonic_widget (GTK_LABEL (label), filesel->file_list);
177 - gtk_widget_show (label);
178 - gtk_tree_view_column_set_widget (column, label);
179 - gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
180 - gtk_tree_view_append_column (GTK_TREE_VIEW (filesel->file_list), column);
182 - gtk_widget_set_size_request (filesel->file_list,
183 - FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
184 - g_signal_connect (filesel->file_list, "row_activated",
185 - G_CALLBACK (gtk_file_selection_file_activate), filesel);
186 - g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (filesel->file_list)), "changed",
187 - G_CALLBACK (gtk_file_selection_file_changed), filesel);
189 - /* gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list)); */
191 - scrolled_win = gtk_scrolled_window_new (NULL, NULL);
192 - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win), GTK_SHADOW_IN);
193 - gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
194 - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
195 - GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
196 - gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 0);
197 - gtk_container_add (GTK_CONTAINER (list_container), scrolled_win);
198 - gtk_widget_show (filesel->file_list);
199 - gtk_widget_show (scrolled_win);
201 /* action area for packing buttons into. */
202 filesel->action_area = gtk_hbox_new (TRUE, 0);
203 gtk_box_pack_start (GTK_BOX (filesel->main_vbox), filesel->action_area,
204 @@ -2008,6 +2027,23 @@
208 +gtk_file_selection_activate (GtkTreeView *tree_view,
210 + GtkTreeViewColumn *column,
211 + gpointer user_data)
213 + GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
217 + gtk_tree_model_get_iter (model, &iter, path);
218 + gtk_tree_model_get (model, &iter, ISFILE_COLUMN, &is_file, -1);
221 + gtk_file_selection_dir_activate (tree_view, path, column, user_data);
225 gtk_file_selection_file_activate (GtkTreeView *tree_view,
227 GtkTreeViewColumn *column,
228 @@ -2103,7 +2139,6 @@
229 PossibleCompletion* poss;
231 GtkListStore *dir_model;
232 - GtkListStore *file_model;
234 gchar* rem_path = rel_path;
236 @@ -2125,10 +2160,8 @@
237 g_assert (cmpl_state->reference_dir);
239 dir_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->dir_list)));
240 - file_model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (fs->file_list)));
242 gtk_list_store_clear (dir_model);
243 - gtk_list_store_clear (file_model);
245 /* Set the dir list to include ./ and ../ */
246 gtk_list_store_append (dir_model, &iter);
247 @@ -2150,13 +2183,17 @@
248 strcmp (filename, ".." G_DIR_SEPARATOR_S) != 0)
250 gtk_list_store_append (dir_model, &iter);
251 - gtk_list_store_set (dir_model, &iter, DIR_COLUMN, filename, -1);
252 + gtk_list_store_set (dir_model, &iter,
253 + DIR_COLUMN, filename,
254 + ISFILE_COLUMN, FALSE, -1);
259 - gtk_list_store_append (file_model, &iter);
260 - gtk_list_store_set (file_model, &iter, DIR_COLUMN, filename, -1);
261 + gtk_list_store_append (dir_model, &iter);
262 + gtk_list_store_set (dir_model, &iter,
263 + DIR_COLUMN, filename,
264 + ISFILE_COLUMN, TRUE, -1);