Module: wine Branch: master Commit: 562dd4ab65c11d7221d4a1092643dd447e6b22b9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=562dd4ab65c11d7221d4a10926...
Author: Huw Davies huw@codeweavers.com Date: Mon Jan 19 16:38:43 2009 +0000
comdlg32: Add helpers for getting and setting the devmode papersize.
---
dlls/comdlg32/printdlg.c | 32 ++++++++++++++++++++++++-------- 1 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/dlls/comdlg32/printdlg.c b/dlls/comdlg32/printdlg.c index d58ddb2..0634381 100644 --- a/dlls/comdlg32/printdlg.c +++ b/dlls/comdlg32/printdlg.c @@ -2575,13 +2575,28 @@ static WORD pagesetup_get_orientation(PageSetupDataA *pda) return orient; }
+static void pagesetup_set_papersize(PageSetupDataA *pda, WORD paper) +{ + DEVMODEA *dm = GlobalLock(pda->dlga->hDevMode); + dm->u1.s1.dmPaperSize = paper; + GlobalUnlock(pda->dlga->hDevMode); +} + +static WORD pagesetup_get_papersize(PageSetupDataA *pda) +{ + DEVMODEA *dm = GlobalLock(pda->dlga->hDevMode); + WORD paper = dm->u1.s1.dmPaperSize; + GlobalUnlock(pda->dlga->hDevMode); + return paper; +} + static BOOL pagesetup_update_papersize(PageSetupDataA *pda) { DEVNAMES *dn; DEVMODEA *dm; LPSTR devname, portname; int i, num; - WORD *words = NULL; + WORD *words = NULL, paperword; POINT *points = NULL; BOOL retval = FALSE;
@@ -2612,13 +2627,15 @@ static BOOL pagesetup_update_papersize(PageSetupDataA *pda) goto end; }
+ paperword = pagesetup_get_papersize(pda); + for (i = 0; i < num; i++) - if (words[i] == dm->u1.s1.dmPaperSize) + if (words[i] == paperword) break;
if (i == num) { - FIXME("Papersize %d not found in list?\n", dm->u1.s1.dmPaperSize); + FIXME("Papersize %d not found in list?\n", paperword); goto end; }
@@ -3046,9 +3063,7 @@ PRINTDLG_PS_WMCommandA( SendDlgItemMessageA(hDlg, cmb2, CB_GETCURSEL, 0, 0), 0); if (paperword != CB_ERR) { - DEVMODEA *dm = GlobalLock(pda->dlga->hDevMode); - dm->u1.s1.dmPaperSize = paperword; - GlobalUnlock(pda->dlga->hDevMode); + pagesetup_set_papersize(pda, paperword); pagesetup_update_papersize(pda); PRINTDLG_PS_ChangePaperPrev(pda); } else @@ -3090,9 +3105,10 @@ PRINTDLG_PS_WMCommandA( PRINTDLG_PS_ChangePaperPrev(pda); /* Selecting paper in combo */ count = SendDlgItemMessageA(hDlg, cmb2, CB_GETCOUNT, 0, 0); - if(count != CB_ERR){ + if(count != CB_ERR) { + WORD paperword = pagesetup_get_papersize(pda); for(i=0; i<count; ++i){ - if(SendDlgItemMessageA(hDlg, cmb2, CB_GETITEMDATA, i, 0) == dm->u1.s1.dmPaperSize) { + if(SendDlgItemMessageA(hDlg, cmb2, CB_GETITEMDATA, i, 0) == paperword) { SendDlgItemMessageA(hDlg, cmb2, CB_SETCURSEL, i, 0); break; }