Get the initial paper size from the locale info.
diff --git a/dlls/wineps/init.c b/dlls/wineps/init.c
index 56ebcb9..210d1d7 100644
--- a/dlls/wineps/init.c
+++ b/dlls/wineps/init.c
@@ -444,6 +444,7 @@
DWORD ppdType;
char* ppdFileName = NULL;
HKEY hkey;
+ BOOL using_default_devmode = FALSE;
TRACE("'%s'\n", name);
@@ -473,8 +474,7 @@
goto cleanup;
memcpy(pi->Devmode, &DefaultDevmode, sizeof(DefaultDevmode) );
strcpy(pi->Devmode->dmPublic.dmDeviceName,name);
- DrvSetPrinterData16((LPSTR)name, (LPSTR)INT_PD_DEFAULT_DEVMODE,
- REG_BINARY, (LPBYTE)&DefaultDevmode, sizeof(DefaultDevmode) );
+ using_default_devmode = TRUE;
/* need to do something here AddPrinter?? */
}
@@ -560,6 +560,23 @@
goto closeprinter;
}
+
+ if(using_default_devmode) {
+ DWORD papersize;
+
+ if(GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_IPAPERSIZE | LOCALE_RETURN_NUMBER,
+ (LPWSTR)&papersize, sizeof(papersize))) {
+ PSDRV_DEVMODEA dm;
+ memset(&dm, 0, sizeof(dm));
+ dm.dmPublic.dmFields = DM_PAPERSIZE;
+ dm.dmPublic.u1.s1.dmPaperSize = papersize;
+ PSDRV_MergeDevmodes(pi->Devmode, &dm, pi);
+ }
+ DrvSetPrinterData16((LPSTR)name, (LPSTR)INT_PD_DEFAULT_DEVMODE,
+ REG_BINARY, (LPBYTE)pi->Devmode, sizeof(DefaultDevmode) );
+ }
+
+
/*
* This is a hack. The default paper size should be read in as part of
* the Devmode structure, but Wine doesn't currently provide a convenient