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