]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/cmndata.cpp
link preventing typo fixed
[wxWidgets.git] / src / common / cmndata.cpp
index f8195c8a2320403edc1bfbaa269a5434367ffa3e..de57dda478225b0e3bcbb3d0a2d1008333a8db88 100644 (file)
@@ -40,7 +40,7 @@
 #include "wx/log.h"
 
 // For compatibility
-#if (defined(__WXMOTIF__) || defined(__WXGTK__) || defined(__WXPM__)) && wxUSE_POSTSCRIPT
+#if (defined(__WXMOTIF__) || defined(__WXGTK__) || defined(__WXPM__) || defined(__WXMAC__)) && wxUSE_POSTSCRIPT
     #define wxCOMPATIBILITY_WITH_PRINTSETUPDATA 1
 #endif
 
     #define pt2mm            0.352777777778
 #endif // Mac
 
+#ifndef DMPAPER_USER
+     #define DMPAPER_USER                256
+#endif
+
 // ============================================================================
 // implementation
 // ============================================================================
@@ -177,7 +181,7 @@ wxPrintData::wxPrintData()
     m_macPrintSettings = kPMNoPrintSettings;
 #else
        m_macPrintInfo = (THPrint) NewHandleClear( sizeof( TPrint ) ) ;
-       (**m_macPrintInfo).iPrVersion = 0;                                      // something invalid 
+       (**m_macPrintInfo).iPrVersion = 0;                                      // something invalid
 
        (**m_macPrintInfo).prInfo.iHRes = 72;
        (**m_macPrintInfo).prInfo.iVRes = 72;
@@ -186,8 +190,8 @@ wxPrintData::wxPrintData()
 
        Rect r2 = { -18, -36, 8*72 - 18, 11*72 - 36  } ;
        (**m_macPrintInfo).rPaper = r2;
-       (**m_macPrintInfo).prStl.iPageV = 11 * 120 ;                            // 11 inches in 120th of an inch 
-       (**m_macPrintInfo).prStl.iPageH = 8 * 120 ;                             // 8 inches in 120th of an inch 
+       (**m_macPrintInfo).prStl.iPageV = 11 * 120 ;                            // 11 inches in 120th of an inch
+       (**m_macPrintInfo).prStl.iPageH = 8 * 120 ;                             // 8 inches in 120th of an inch
 #endif
 #endif
     m_printOrientation = wxPORTRAIT;
@@ -255,7 +259,7 @@ wxPrintData::~wxPrintData()
     }
 #else
        wxASSERT( m_macPrintInfo ) ;
-       // we should perhaps delete 
+       // we should perhaps delete
 #endif
 #endif
 }
@@ -442,6 +446,7 @@ void wxPrintData::ConvertToNative()
                // DEVMODE is in tenths of a milimeter
             devMode->dmPaperWidth = m_paperSize.x * 10;
             devMode->dmPaperLength = m_paperSize.y * 10;
+            devMode->dmPaperSize = DMPAPER_USER;
             devMode->dmFields |= DM_PAPERWIDTH;
             devMode->dmFields |= DM_PAPERLENGTH;
         }
@@ -584,7 +589,11 @@ void wxPrintData::ConvertFromNative()
 #ifndef __WXWINE__
         //// Paper size
 
-        if (devMode->dmFields & DM_PAPERSIZE)
+        // We don't know size of user defined paper and some buggy drivers
+        // set both DM_PAPERSIZE and DM_PAPERWIDTH & DM_PAPERLENGTH. Since
+        // dmPaperSize >= DMPAPER_USER wouldn't be in wxWin's database, this
+        // code wouldn't set m_paperSize correctly.
+        if ((devMode->dmFields & DM_PAPERSIZE) && (devMode->dmPaperSize < DMPAPER_USER))
         {
             if (wxThePrintPaperDatabase)
             {
@@ -910,11 +919,11 @@ void wxPrintDialogData::ConvertToNative()
     m_printData.SetNativeDataDevNames((void*) NULL);
 
     pd->hDC = (HDC) NULL;
-    pd->nFromPage = (UINT)m_printFromPage;
-    pd->nToPage = (UINT)m_printToPage;
-    pd->nMinPage = (UINT)m_printMinPage;
-    pd->nMaxPage = (UINT)m_printMaxPage;
-    pd->nCopies = (UINT)m_printNoCopies;
+    pd->nFromPage = (WORD)m_printFromPage;
+    pd->nToPage = (WORD)m_printToPage;
+    pd->nMinPage = (WORD)m_printMinPage;
+    pd->nMaxPage = (WORD)m_printMaxPage;
+    pd->nCopies = (WORD)m_printNoCopies;
 
     pd->Flags = PD_RETURNDC ;
 
@@ -937,7 +946,7 @@ void wxPrintDialogData::ConvertToNative()
 
     if ( m_printAllPages )
         pd->Flags |= PD_ALLPAGES;
-    if ( m_printAllPages )
+    if ( m_printSelection )
         pd->Flags |= PD_SELECTION;
     if ( m_printCollate )
         pd->Flags |= PD_COLLATE;