Commit c75488a894697377d48679673a08c0234164c454
1 parent
7823717c
Exists in
master
and in
5 other branches
Diálogo de impressão não estava salvando o tamanho do papel
Showing
1 changed file
with
20 additions
and
20 deletions
Show diff stats
src/pw3270/print.c
| ... | ... | @@ -259,6 +259,7 @@ static gchar * enum_to_string(GType type, guint enum_value) |
| 259 | 259 | // Save settings |
| 260 | 260 | GtkPrintSettings * settings = gtk_print_operation_get_print_settings(prt); |
| 261 | 261 | GtkPageSetup * pgsetup = gtk_print_operation_get_default_page_setup(prt); |
| 262 | + GtkPaperSize * papersize = gtk_page_setup_get_paper_size(pgsetup); | |
| 262 | 263 | |
| 263 | 264 | trace("Saving settings PrintSettings=%p page_setup=%p",settings,pgsetup); |
| 264 | 265 | |
| ... | ... | @@ -290,27 +291,23 @@ static gchar * enum_to_string(GType type, guint enum_value) |
| 290 | 291 | |
| 291 | 292 | g_free (orientation); |
| 292 | 293 | |
| 293 | - if(RegCreateKeyEx(hKey,"papersize",0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL,&hPaperSize,&disp) == ERROR_SUCCESS) | |
| 294 | + if(papersize && RegCreateKeyEx(hKey,"papersize",0,NULL,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,NULL,&hPaperSize,&disp) == ERROR_SUCCESS) | |
| 294 | 295 | { |
| 295 | - GtkPaperSize *size = gtk_page_setup_get_paper_size(pgsetup); | |
| 296 | - if(size) | |
| 297 | - { | |
| 298 | - // From http://git.gnome.org/browse/gtk+/tree/gtk/gtkpapersize.c | |
| 299 | - const gchar *name = gtk_paper_size_get_name(size); | |
| 300 | - const gchar *display_name = gtk_paper_size_get_display_name(size); | |
| 301 | - const gchar *ppd_name = gtk_paper_size_get_ppd_name(size); | |
| 302 | - | |
| 303 | - if (ppd_name != NULL) | |
| 304 | - save_string(hPaperSize,"PPDName", ppd_name); | |
| 305 | - else | |
| 306 | - save_string(hPaperSize,"Name", name); | |
| 307 | - | |
| 308 | - if (display_name) | |
| 309 | - save_string(hPaperSize,"DisplayName", display_name); | |
| 310 | - | |
| 311 | - save_double(hPaperSize, "Width", gtk_paper_size_get_width (size, GTK_UNIT_MM)); | |
| 312 | - save_double(hPaperSize, "Height", gtk_paper_size_get_height (size, GTK_UNIT_MM)); | |
| 313 | - } | |
| 296 | + // From http://git.gnome.org/browse/gtk+/tree/gtk/gtkpapersize.c | |
| 297 | + const gchar *name = gtk_paper_size_get_name(papersize); | |
| 298 | + const gchar *display_name = gtk_paper_size_get_display_name(papersize); | |
| 299 | + const gchar *ppd_name = gtk_paper_size_get_ppd_name(papersize); | |
| 300 | + | |
| 301 | + if (ppd_name != NULL) | |
| 302 | + save_string(hPaperSize,"PPDName", ppd_name); | |
| 303 | + else | |
| 304 | + save_string(hPaperSize,"Name", name); | |
| 305 | + | |
| 306 | + if (display_name) | |
| 307 | + save_string(hPaperSize,"DisplayName", display_name); | |
| 308 | + | |
| 309 | + save_double(hPaperSize, "Width", gtk_paper_size_get_width (size, GTK_UNIT_MM)); | |
| 310 | + save_double(hPaperSize, "Height", gtk_paper_size_get_height (size, GTK_UNIT_MM)); | |
| 314 | 311 | RegCloseKey(hPaperSize); |
| 315 | 312 | } |
| 316 | 313 | RegCloseKey(hKey); |
| ... | ... | @@ -322,6 +319,7 @@ static gchar * enum_to_string(GType type, guint enum_value) |
| 322 | 319 | GKeyFile * conf = get_application_keyfile(); |
| 323 | 320 | gtk_print_settings_to_key_file(settings,conf,"print_settings"); |
| 324 | 321 | gtk_page_setup_to_key_file(pgsetup,conf,"page_setup"); |
| 322 | + gtk_paper_size_to_key_file(papersize,conf,"paper_size"); | |
| 325 | 323 | #endif |
| 326 | 324 | } |
| 327 | 325 | |
| ... | ... | @@ -547,6 +545,7 @@ static gchar * enum_to_string(GType type, guint enum_value) |
| 547 | 545 | GtkPrintOperation * print = gtk_print_operation_new(); |
| 548 | 546 | GtkPrintSettings * settings = gtk_print_settings_new(); |
| 549 | 547 | GtkPageSetup * setup = gtk_page_setup_new(); |
| 548 | + GtkPaperSize * papersize = gtk_paper_size_new((const gchar *) g_object_get_data(obj,"papersize")); | |
| 550 | 549 | |
| 551 | 550 | *info = g_new0(PRINT_INFO,1); |
| 552 | 551 | (*info)->session = v3270_get_session(widget); |
| ... | ... | @@ -630,6 +629,7 @@ static gchar * enum_to_string(GType type, guint enum_value) |
| 630 | 629 | |
| 631 | 630 | // Finish settings |
| 632 | 631 | gtk_print_operation_set_print_settings(print,settings); |
| 632 | + gtk_page_setup_set_paper_size_and_default_margins(setup,papersize); | |
| 633 | 633 | gtk_print_operation_set_default_page_setup(print,setup); |
| 634 | 634 | |
| 635 | 635 | trace("%s ends",__FUNCTION__); | ... | ... |