]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/printdlg.cpp
Huge streams checking and warning fixes.
[wxWidgets.git] / src / msw / printdlg.cpp
index 3b01b5b5b14205d48b31250c083dc0e5379ca18b..abe7e64ad4927453650ce4c904af8848b8443b5c 100644 (file)
@@ -215,7 +215,7 @@ bool wxWindowsPrintNativeData::TransferTo( wxPrintData &data )
                     // Shouldn't really get here
                     wxFAIL_MSG(wxT("Couldn't find paper size in paper database."));
                     data.SetPaperId( wxPAPER_NONE );
-                    data.SetPaperSize( wxSize() );
+                    data.SetPaperSize( wxSize(0,0) );
                 }
             }
             else
@@ -223,7 +223,7 @@ bool wxWindowsPrintNativeData::TransferTo( wxPrintData &data )
                 // Shouldn't really get here
                 wxFAIL_MSG(wxT("Paper database wasn't initialized in wxPrintData::ConvertFromNative."));
                 data.SetPaperId( wxPAPER_NONE );
-                data.SetPaperSize( wxSize() );
+                data.SetPaperSize( wxSize(0,0) );
             }
         }
         else if ((devMode->dmFields & DM_PAPERWIDTH) && (devMode->dmFields & DM_PAPERLENGTH))
@@ -237,7 +237,7 @@ bool wxWindowsPrintNativeData::TransferTo( wxPrintData &data )
             // Shouldn't really get here
             wxFAIL_MSG(wxT("Couldn't find paper size from DEVMODE."));
             data.SetPaperId( wxPAPER_NONE );
-            data.SetPaperSize( wxSize() );
+            data.SetPaperSize( wxSize(0,0) );
         }
 
         //// Duplex
@@ -279,6 +279,11 @@ bool wxWindowsPrintNativeData::TransferTo( wxPrintData &data )
         else
             data.SetQuality( wxPRINT_QUALITY_HIGH );
 
+        if (devMode->dmDriverExtra > 0)
+            data.SetPrivData( (char *)devMode+devMode->dmSize, devMode->dmDriverExtra );
+        else
+            data.SetPrivData( NULL, 0 );
+
         GlobalUnlock(hDevMode);
     }
 
@@ -469,6 +474,12 @@ bool wxWindowsPrintNativeData::TransferFrom( const wxPrintData &data )
         }
         devMode->dmPrintQuality = quality;
         devMode->dmFields |= DM_PRINTQUALITY;
+        
+        if (data.GetPrivDataLen() > 0)
+        {
+            memcpy( (char *)devMode+devMode->dmSize, data.GetPrivData(), data.GetPrivDataLen() );
+            devMode->dmDriverExtra = data.GetPrivDataLen();
+        }
 
         if (data.GetBin() != wxPRINTBIN_DEFAULT)
         {