Module: wine Branch: master Commit: bfa384504a01c43af269c701b4308b6971158eec URL: http://source.winehq.org/git/wine.git/?a=commit;h=bfa384504a01c43af269c701b4...
Author: Huw Davies huw@codeweavers.com Date: Wed Jan 21 18:10:50 2009 +0000
comdlg32: Move handling of the 'Properties' button to a separate function.
---
dlls/comdlg32/printdlg.c | 93 ++++++++++++++++++++++++++------------------- 1 files changed, 54 insertions(+), 39 deletions(-)
diff --git a/dlls/comdlg32/printdlg.c b/dlls/comdlg32/printdlg.c index 412c343..41d8e4a 100644 --- a/dlls/comdlg32/printdlg.c +++ b/dlls/comdlg32/printdlg.c @@ -3211,6 +3211,57 @@ static void pagesetup_update_orientation_buttons(HWND hDlg, const PageSetupDataA CheckRadioButton(hDlg, rad1, rad2, rad1); }
+/**************************************************************************************** + * pagesetup_printer_properties + * + * Handle invocation of the 'Properties' button (not present in the default template). + */ +static void pagesetup_printer_properties(HWND hDlg, PageSetupDataA *data) +{ + HANDLE hprn; + LPWSTR devname; + DEVMODEW *dm; + LRESULT count; + int i; + + devname = pagesetup_get_devname(data); + + if (!OpenPrinterW(devname, &hprn, NULL)) + { + FIXME("Call to OpenPrinter did not succeed!\n"); + pagesetup_release_devname(data, devname); + return; + } + + dm = pagesetup_get_devmode(data); + DocumentPropertiesW(hDlg, hprn, devname, dm, dm, DM_IN_BUFFER | DM_OUT_BUFFER | DM_IN_PROMPT); + pagesetup_set_devmode(data, dm); + pagesetup_release_devmode(data, dm); + pagesetup_release_devname(data, devname); + ClosePrinter(hprn); + + /* Changing paper */ + pagesetup_update_papersize(data); + pagesetup_update_orientation_buttons(hDlg, data); + + /* Changing paper preview */ + PRINTDLG_PS_ChangePaperPrev(data); + + /* Selecting paper in combo */ + count = SendDlgItemMessageW(hDlg, cmb2, CB_GETCOUNT, 0, 0); + if(count != CB_ERR) + { + WORD paperword = pagesetup_get_papersize(data); + for(i = 0; i < count; i++) + { + if(SendDlgItemMessageW(hDlg, cmb2, CB_GETITEMDATA, i, 0) == paperword) { + SendDlgItemMessageW(hDlg, cmb2, CB_SETCURSEL, i, 0); + break; + } + } + } +} + /******************************************************************************** * PRINTDLG_PS_WMCommandA * process WM_COMMAND message for PageSetupDlgA @@ -3287,45 +3338,9 @@ PRINTDLG_PS_WMCommandA( pagesetup_set_defaultsource(pda, source); } break; - case psh2: /* Printer Properties button */ - { - HANDLE hPrinter; - char PrinterName[256]; - DEVMODEA *dm; - LRESULT count; - int i; - - GetDlgItemTextA(hDlg, cmb1, PrinterName, 255); - if (!OpenPrinterA(PrinterName, &hPrinter, NULL)) { - FIXME("Call to OpenPrinter did not succeed!\n"); - break; - } - dm = GlobalLock(pda->dlga->hDevMode); - DocumentPropertiesA(hDlg, hPrinter, PrinterName, dm, dm, - DM_IN_BUFFER | DM_OUT_BUFFER | DM_IN_PROMPT); - GlobalUnlock(pda->dlga->hDevMode); - ClosePrinter(hPrinter); - /* Changing paper */ - pagesetup_update_papersize(pda); - pagesetup_update_orientation_buttons(hDlg, pda); - - /* Changing paper preview */ - PRINTDLG_PS_ChangePaperPrev(pda); - /* Selecting paper in combo */ - count = SendDlgItemMessageW(hDlg, cmb2, CB_GETCOUNT, 0, 0); - if(count != CB_ERR) - { - WORD paperword = pagesetup_get_papersize(pda); - for(i = 0; i < count; i++) - { - if(SendDlgItemMessageW(hDlg, cmb2, CB_GETITEMDATA, i, 0) == paperword) { - SendDlgItemMessageW(hDlg, cmb2, CB_SETCURSEL, i, 0); - break; - } - } - } - break; - } + case psh2: /* Printer Properties button */ + pagesetup_printer_properties(hDlg, pda); + break; case edt4: case edt5: case edt6: