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,6 +281,9 @@ | ||
| 281 | GError *error = NULL; | 281 | GError *error = NULL; |
| 282 | gchar *text = NULL; | 282 | gchar *text = NULL; |
| 283 | 283 | ||
| 284 | + if(!encoding) | ||
| 285 | + g_get_charset(&encoding); | ||
| 286 | + | ||
| 284 | trace("Loading \"%s\" encoding=%s",filename,encoding); | 287 | trace("Loading \"%s\" encoding=%s",filename,encoding); |
| 285 | 288 | ||
| 286 | if(!g_file_get_contents(filename,&text,NULL,&error)) | 289 | if(!g_file_get_contents(filename,&text,NULL,&error)) |
| @@ -309,15 +312,17 @@ | @@ -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 | int f; | 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 | // Add charset options | 327 | // Add charset options |
| 323 | static const struct _list | 328 | static const struct _list |
| @@ -340,7 +345,7 @@ | @@ -340,7 +345,7 @@ | ||
| 340 | int p = 0; | 345 | int p = 0; |
| 341 | 346 | ||
| 342 | g_get_charset(&charset); | 347 | g_get_charset(&charset); |
| 343 | - *encoding = charset; | 348 | + *encoding = g_strdup(charset); |
| 344 | 349 | ||
| 345 | text = g_strdup_printf(_("Current (%s)"),charset); | 350 | text = g_strdup_printf(_("Current (%s)"),charset); |
| 346 | gtk_combo_box_text_insert(GTK_COMBO_BOX_TEXT(menu),p,charset,text); | 351 | gtk_combo_box_text_insert(GTK_COMBO_BOX_TEXT(menu),p,charset,text); |
| @@ -372,7 +377,7 @@ | @@ -372,7 +377,7 @@ | ||
| 372 | { | 377 | { |
| 373 | const gchar * user_title = g_object_get_data(G_OBJECT(action),"title"); | 378 | const gchar * user_title = g_object_get_data(G_OBJECT(action),"title"); |
| 374 | const gchar * filename = g_object_get_data(G_OBJECT(action),"filename"); | 379 | const gchar * filename = g_object_get_data(G_OBJECT(action),"filename"); |
| 375 | - const gchar * encattr; | 380 | + gchar * encattr = NULL; |
| 376 | GtkWidget * dialog; | 381 | GtkWidget * dialog; |
| 377 | gchar * ptr; | 382 | gchar * ptr; |
| 378 | 383 | ||
| @@ -380,7 +385,8 @@ | @@ -380,7 +385,8 @@ | ||
| 380 | 385 | ||
| 381 | if(filename) | 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 | return; | 390 | return; |
| 385 | } | 391 | } |
| 386 | 392 | ||
| @@ -398,21 +404,20 @@ | @@ -398,21 +404,20 @@ | ||
| 398 | gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog),ptr); | 404 | gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog),ptr); |
| 399 | g_free(ptr); | 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 | gtk_widget_destroy(dialog); | 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 |