ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/gtkbfc/gtkbfc.c
(Generate patch)

Comparing gtkbfc/gtkbfc.c (file contents):
Revision 1.9 by root, Sat Aug 18 10:48:29 2007 UTC vs.
Revision 1.11 by root, Sat Aug 18 11:08:01 2007 UTC

63} 63}
64 64
65gchar * gtk_file_chooser_get_current_folder (GtkFileChooser *chooser) 65gchar * gtk_file_chooser_get_current_folder (GtkFileChooser *chooser)
66{ 66{
67 DEBUG ((printf ("gtk_file_chooser_get_current_folder\n"))) 67 DEBUG ((printf ("gtk_file_chooser_get_current_folder\n")))
68 return g_strdup ("/nonex1st4nt/"); 68 return g_strdup ("/tmp/gtkbfc");
69} 69}
70 70
71///////////////////////////////////////////////////////////////////////////// 71/////////////////////////////////////////////////////////////////////////////
72 72
73static const gchar * 73static const gchar *
146 146
147///////////////////////////////////////////////////////////////////////////// 147/////////////////////////////////////////////////////////////////////////////
148 148
149static gboolean activate_cb (gpointer data) 149static gboolean activate_cb (gpointer data)
150{ 150{
151 gtk_widget_set_sensitive (GTK_WIDGET (gtk_widget_get_toplevel (data)), 1);
151 gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (data), FALSE); 152 gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (data), FALSE);
152 //fprintf (stderr, "ad %d\n", gtk_window_activate_default (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (data))))); 153 //fprintf (stderr, "ad %d\n", gtk_window_activate_default (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (data)))));
153 g_signal_emit_by_name (GTK_FILE_CHOOSER (data), "file-activated"); 154 g_signal_emit_by_name (GTK_FILE_CHOOSER (data), "file-activated");
154 return FALSE; 155 return FALSE;
155} 156}
156 157
157static gboolean unmap_cb (gpointer data) 158static gboolean unmap_cb (gpointer data)
158{ 159{
160 // set the path again to avoid a race condition
161 ((void (*)(void *, const char *)) dlsym (RTLD_NEXT, "gtk_file_chooser_set_filename"))(GTK_FILE_CHOOSER (data), "/tmp/gtkbfc/empty");
162 gtk_widget_set_sensitive (GTK_WIDGET (gtk_widget_get_toplevel (data)), 0);
159 gtk_widget_unmap (GTK_WIDGET (gtk_widget_get_toplevel (data))); 163 //gtk_widget_unmap (GTK_WIDGET (gtk_widget_get_toplevel (data)));
160 return FALSE; 164 return FALSE;
161} 165}
162 166
163static gboolean read_result (GIOChannel *source, GIOCondition condition, gpointer data) 167static gboolean read_result (GIOChannel *source, GIOCondition condition, gpointer data)
164{ 168{
201 argv [3] = 0; 205 argv [3] = 0;
202 206
203 mkdir ("/tmp/gtkbfc", 0777); 207 mkdir ("/tmp/gtkbfc", 0777);
204 close (open ("/tmp/gtkbfc/empty", O_WRONLY|O_CREAT|O_TRUNC, 0666)); 208 close (open ("/tmp/gtkbfc/empty", O_WRONLY|O_CREAT|O_TRUNC, 0666));
205 209
206 if (save)
207 ((void (*)(void *, const char *)) dlsym (RTLD_NEXT, "gtk_file_chooser_set_current_name"))(GTK_FILE_CHOOSER (widget), "/tmp/gtkbfc/empty");
208 else
209 ((void (*)(void *, const char *)) dlsym (RTLD_NEXT, "gtk_file_chooser_set_filename"))(GTK_FILE_CHOOSER (widget), "/tmp/gtkbfc/empty"); 210 ((void (*)(void *, const char *)) dlsym (RTLD_NEXT, "gtk_file_chooser_set_filename"))(GTK_FILE_CHOOSER (widget), "/tmp/gtkbfc/empty");
210 211
211 gint stdout_fd = -1; 212 gint stdout_fd = -1;
212 213
213 if (g_spawn_async_with_pipes (0, argv, 0, 0, 0, 0, 0, 0, &stdout_fd, 0, 0)) 214 if (g_spawn_async_with_pipes (0, argv, 0, 0, 0, 0, 0, 0, &stdout_fd, 0, 0))
214 { 215 {
215 GIOChannel *channel = g_io_channel_unix_new (stdout_fd); 216 GIOChannel *channel = g_io_channel_unix_new (stdout_fd);
216 gtk_widget_hide (GTK_WIDGET (gtk_widget_get_toplevel (widget))); 217 //gtk_widget_hide (GTK_WIDGET (gtk_widget_get_toplevel (widget)));
217 g_io_add_watch (channel, G_IO_IN, read_result, widget); 218 g_io_add_watch (channel, G_IO_IN, read_result, widget);
218 g_idle_add (unmap_cb, widget); 219 g_idle_add (unmap_cb, widget);
219 //g_timeout_add (1, unmap_cb, widget); 220 //g_timeout_add (1, unmap_cb, widget);
220 } 221 }
221 else 222 else

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines