From: Rick Yorgason Date: Thu, 1 Nov 2018 18:31:05 +0000 (-0700) Subject: Fixed win32 printer dialogue not saving devmode->dmDeviceName. Caused the print dialo... X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~20^2~86^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=26febcc3a80f3c7ed38b41ad14583929565c03ee;p=gtk4.git Fixed win32 printer dialogue not saving devmode->dmDeviceName. Caused the print dialogue to select the wrong printer, and potentially feed bad "extra" data to the default printer. --- diff --git a/gtk/gtkprintoperation-win32.c b/gtk/gtkprintoperation-win32.c index 147f64a848..13ad11c24c 100644 --- a/gtk/gtkprintoperation-win32.c +++ b/gtk/gtkprintoperation-win32.c @@ -709,6 +709,10 @@ devmode_to_settings (GtkPrintSettings *settings, g_free (extra); } + char *devmode_name = g_utf16_to_utf8 (devmode->dmDeviceName, -1, NULL, NULL, NULL); + gtk_print_settings_set (settings, "win32-devmode-name", devmode_name); + g_free (devmode_name); + if (devmode->dmFields & DM_ORIENTATION) gtk_print_settings_set_orientation (settings, orientation_from_win32 (devmode->dmOrientation)); @@ -986,6 +990,11 @@ devmode_from_settings (GtkPrintSettings *settings, devmode->dmSpecVersion = DM_SPECVERSION; devmode->dmSize = sizeof (DEVMODEW); + gunichar2 *device_name = g_utf8_to_utf16 (gtk_print_settings_get (settings, "win32-devmode-name"), -1, NULL, NULL, NULL); + memcpy (devmode->dmDeviceName, device_name, CCHDEVICENAME); + g_free (device_name); + + devmode->dmDriverExtra = 0; if (extras && extras_len > 0) {