Huw Davies : comdlg32: Move handling of the 'Properties' button to a separate function.
Alexandre Julliard
julliard at winehq.org
Thu Jan 22 08:41:29 CST 2009
Module: wine
Branch: master
Commit: bfa384504a01c43af269c701b4308b6971158eec
URL: http://source.winehq.org/git/wine.git/?a=commit;h=bfa384504a01c43af269c701b4308b6971158eec
Author: Huw Davies <huw at 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:
More information about the wine-cvs
mailing list