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__); | ... | ... |