]> git.pld-linux.org Git - packages/vim.git/blame - vim-gtkfilechooser.patch
updated to 7.3.1105
[packages/vim.git] / vim-gtkfilechooser.patch
CommitLineData
f8692241 1--- ../vim63b.orig/src/gui_gtk.c 2004-05-12 18:01:45.000000000 +0200
2+++ src/gui_gtk.c 2004-05-19 19:26:19.000000000 +0200
3@@ -39,6 +39,16 @@
4
5 #include "vim.h"
6
7+/* Check to see if we are able to use GtkFileChooser */
8+#undef HAVE_FILECHOOSER
9+
10+#if defined(HAVE_GTK2)
11+# if GTK_MINOR_VERSION >= 4
12+# define HAVE_FILECHOOSER
13+# endif
14+#endif
15+
16+
17 #ifdef FEAT_GUI_GNOME
18 /* Gnome redefines _() and N_(). Grrr... */
19 # ifdef _
20@@ -1202,6 +1212,7 @@
21 * Implementation of the file selector related stuff
22 */
23
24+#if !defined(HAVE_FILECHOOSER)
25 /*ARGSUSED*/
26 static void
27 browse_ok_cb(GtkWidget *widget, gpointer cbdata)
28@@ -1233,6 +1244,7 @@
29 if (gtk_main_level() > 0)
30 gtk_main_quit();
31 }
32+#endif
33
34 /*ARGSUSED*/
35 static gboolean
36@@ -1270,7 +1282,11 @@
37 char_u *initdir,
38 char_u *filter)
39 {
40+#if !defined(HAVE_FILECHOOSER)
41 GtkFileSelection *fs; /* shortcut */
42+#else
43+ GtkFileChooserDialog *fs;
44+#endif
45 char_u dirbuf[MAXPATHL];
46 char_u *p;
47
48@@ -1280,6 +1296,7 @@
49
50 if (!gui.filedlg)
51 {
52+#if !defined(HAVE_FILECHOOSER)
53 gui.filedlg = gtk_file_selection_new((const gchar *)title);
54 gtk_window_set_modal(GTK_WINDOW(gui.filedlg), TRUE);
55 gtk_window_set_transient_for(GTK_WINDOW(gui.filedlg),
56@@ -1296,6 +1313,26 @@
57 gtk_signal_connect_object(GTK_OBJECT(gui.filedlg),
58 "destroy", GTK_SIGNAL_FUNC(browse_destroy_cb),
59 GTK_OBJECT(gui.filedlg));
60+#else
61+ if(saving == 0)
62+ gui.filedlg = gtk_file_chooser_dialog_new ((const gchar *)title,
63+ GTK_WINDOW(gui.mainwin),
64+ GTK_FILE_CHOOSER_ACTION_OPEN,
65+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
66+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
67+ NULL);
68+ else
69+ gui.filedlg = gtk_file_chooser_dialog_new ((const gchar *)title,
70+ GTK_WINDOW(gui.mainwin),
71+ GTK_FILE_CHOOSER_ACTION_SAVE,
72+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
73+ GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
74+ NULL);
75+
76+ gtk_window_set_modal(GTK_WINDOW(gui.filedlg), TRUE);
77+ fs = GTK_FILE_CHOOSER_DIALOG(gui.filedlg);
78+ gtk_container_border_width(GTK_CONTAINER(fs), 4);
79+#endif
80 }
81 else
82 gtk_window_set_title(GTK_WINDOW(gui.filedlg), (const gchar *)title);
83@@ -1319,18 +1356,41 @@
84 if (dflt != NULL && *dflt != NUL
85 && STRLEN(dirbuf) + 2 + STRLEN(dflt) < MAXPATHL)
86 STRCAT(dirbuf, dflt);
87-
88+#if !defined(HAVE_FILECHOOSER)
89 gtk_file_selection_set_filename(GTK_FILE_SELECTION(gui.filedlg),
90 (const gchar *)dirbuf);
91+#else
92+
93+ if((dirbuf[STRLEN(dirbuf) - 1]) == '/')
94+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(fs),
95+ (const gchar *)dirbuf);
96+ else
97+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(fs),
98+ (const gchar *)dirbuf);
99+#endif
100+
101 # ifndef HAVE_GTK2
102 gui_gtk_position_in_parent(GTK_WIDGET(gui.mainwin),
103 GTK_WIDGET(gui.filedlg), VW_POS_MOUSE);
104 # endif
105
106+#if !defined(HAVE_FILECHOOSER)
107 gtk_widget_show(gui.filedlg);
108 while (gui.filedlg && GTK_WIDGET_DRAWABLE(gui.filedlg))
109 gtk_main_iteration_do(TRUE);
110+#else
111+ if (gui.browse_fname != NULL) {
112+ g_free(gui.browse_fname);
113+ gui.browse_fname = NULL;
114+ }
115+
116+ if (gtk_dialog_run(GTK_DIALOG(fs)) == GTK_RESPONSE_ACCEPT)
117+ gui.browse_fname = gtk_file_chooser_get_filename(
118+ GTK_FILE_CHOOSER(fs));
119
120+ gtk_widget_destroy(GTK_WIDGET(fs));
121+ gui.filedlg = NULL;
122+#endif
123 if (gui.browse_fname == NULL)
124 return NULL;
125
This page took 0.203566 seconds and 4 git commands to generate.