Commit f4cab8adba8b4717a0f46103ac181c625f09ea05
1 parent
f5ed8d1e
Exists in
master
and in
5 other branches
Melhorando o diálogo de pastefile
Showing
1 changed file
with
26 additions
and
21 deletions
Show diff stats
src/gtk/dialog.c
... | ... | @@ -281,6 +281,9 @@ |
281 | 281 | GError *error = NULL; |
282 | 282 | gchar *text = NULL; |
283 | 283 | |
284 | + if(!encoding) | |
285 | + g_get_charset(&encoding); | |
286 | + | |
284 | 287 | trace("Loading \"%s\" encoding=%s",filename,encoding); |
285 | 288 | |
286 | 289 | if(!g_file_get_contents(filename,&text,NULL,&error)) |
... | ... | @@ -309,15 +312,17 @@ |
309 | 312 | |
310 | 313 | } |
311 | 314 | |
312 | - static void add_option_menus(GtkWidget *widget, GtkAction *action, const gchar **encoding) | |
315 | + static void add_option_menus(GtkWidget *widget, GtkAction *action, gchar **encoding) | |
313 | 316 | { |
314 | - GtkWidget *box = gtk_hbox_new(FALSE,6); | |
317 | + GtkWidget *box = gtk_hbox_new(FALSE,6); | |
318 | + gchar *ptr = g_object_get_data(G_OBJECT(action),"encoding"); | |
315 | 319 | int f; |
316 | 320 | |
317 | -// http://people.gnome.org/~icq/scan-build/report-KvV84s.html | |
318 | - | |
319 | - *encoding = g_object_get_data(G_OBJECT(action),"encoding"); | |
320 | - if(!*encoding) | |
321 | + if(ptr) | |
322 | + { | |
323 | + *encoding = g_strdup(ptr); | |
324 | + } | |
325 | + else | |
321 | 326 | { |
322 | 327 | // Add charset options |
323 | 328 | static const struct _list |
... | ... | @@ -340,7 +345,7 @@ |
340 | 345 | int p = 0; |
341 | 346 | |
342 | 347 | g_get_charset(&charset); |
343 | - *encoding = charset; | |
348 | + *encoding = g_strdup(charset); | |
344 | 349 | |
345 | 350 | text = g_strdup_printf(_("Current (%s)"),charset); |
346 | 351 | gtk_combo_box_text_insert(GTK_COMBO_BOX_TEXT(menu),p,charset,text); |
... | ... | @@ -372,7 +377,7 @@ |
372 | 377 | { |
373 | 378 | const gchar * user_title = g_object_get_data(G_OBJECT(action),"title"); |
374 | 379 | const gchar * filename = g_object_get_data(G_OBJECT(action),"filename"); |
375 | - const gchar * encattr; | |
380 | + gchar * encattr = NULL; | |
376 | 381 | GtkWidget * dialog; |
377 | 382 | gchar * ptr; |
378 | 383 | |
... | ... | @@ -380,7 +385,8 @@ |
380 | 385 | |
381 | 386 | if(filename) |
382 | 387 | { |
383 | - paste_filename(widget,filename,encattr ? encattr : "UTF-8"); | |
388 | + ptr = g_object_get_data(G_OBJECT(action),"encoding"); | |
389 | + paste_filename(widget,filename,ptr); | |
384 | 390 | return; |
385 | 391 | } |
386 | 392 | |
... | ... | @@ -398,21 +404,20 @@ |
398 | 404 | gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog),ptr); |
399 | 405 | g_free(ptr); |
400 | 406 | |
401 | - if(gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_ACCEPT) | |
407 | + if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) | |
402 | 408 | { |
403 | - gtk_widget_destroy(dialog); | |
404 | - return; | |
405 | - } | |
406 | - | |
407 | - ptr = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); | |
409 | + ptr = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); | |
408 | 410 | |
411 | + if(ptr) | |
412 | + { | |
413 | + set_string_to_config("load",gtk_action_get_name(action),"%s",ptr); | |
414 | + paste_filename(widget,ptr,encattr); | |
415 | + g_free(ptr); | |
416 | + } | |
417 | + } | |
409 | 418 | gtk_widget_destroy(dialog); |
410 | 419 | |
411 | - if(ptr) | |
412 | - { | |
413 | - set_string_to_config("load",gtk_action_get_name(action),"%s",ptr); | |
414 | - paste_filename(widget,ptr,encattr); | |
415 | - g_free(ptr); | |
416 | - } | |
420 | + if(encattr) | |
421 | + g_free(encattr); | |
417 | 422 | } |
418 | 423 | ... | ... |