]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/printwin.cpp
Save the mode in SetMode
[wxWidgets.git] / src / msw / printwin.cpp
index 26aa924725b18a5272e0a21b74d530a9439517bd..dd8c25b4204c349e8416a4710aa5f74f8831ff2e 100644 (file)
@@ -49,8 +49,9 @@
 #include "wx/msw/printdlg.h"
 #include "wx/msw/private.h"
 #include "wx/msw/dcprint.h"
-#include "wx/msw/enhmeta.h"
-
+#if wxUSE_ENH_METAFILE
+    #include "wx/msw/enhmeta.h"
+#endif
 #include <stdlib.h>
 
 // ---------------------------------------------------------------------------
@@ -90,12 +91,16 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
         return false;
     }
 
-    printout->SetIsPreview(false);
+    // Get some parameters from the printout, if defined
+    int fromPage, toPage;
+    int minPage, maxPage;
+    printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
 
-    if (m_printDialogData.GetMinPage() < 1)
-        m_printDialogData.SetMinPage(1);
-    if (m_printDialogData.GetMaxPage() < 1)
-        m_printDialogData.SetMaxPage(9999);
+    m_printDialogData.SetFromPage(fromPage);
+    m_printDialogData.SetToPage(toPage);
+    m_printDialogData.SetMinPage(minPage);
+    m_printDialogData.SetMaxPage(maxPage);
+    m_printDialogData.SetAllPages((fromPage == minPage) && (toPage == maxPage));
 
     // Create a suitable device context
     wxPrinterDC *dc wxDUMMY_INITIALIZE(NULL);
@@ -152,11 +157,6 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
 
     printout->OnPreparePrinting();
 
-    // Get some parameters from the printout, if defined
-    int fromPage, toPage;
-    int minPage, maxPage;
-    printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage);
-
     if (maxPage == 0)
     {
         sm_lastError = wxPRINTER_ERROR;
@@ -245,8 +245,7 @@ bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt
     if (sm_abortWindow)
     {
         sm_abortWindow->Show(false);
-        delete sm_abortWindow;
-        sm_abortWindow = NULL;
+        wxDELETE(sm_abortWindow);
     }
 
     delete dc;
@@ -393,6 +392,7 @@ void wxWindowsPrintPreview::DetermineScaling()
     m_previewScaleY = float(logPPIScreenY) / logPPIPrinterY;
 }
 
+#if wxUSE_ENH_METAFILE
 bool wxWindowsPrintPreview::RenderPageIntoBitmap(wxBitmap& bmp, int pageNum)
 {
     // The preview, as implemented in wxPrintPreviewBase (and as used prior to
@@ -438,7 +438,7 @@ bool wxWindowsPrintPreview::RenderPageIntoBitmap(wxBitmap& bmp, int pageNum)
 
     return true;
 }
-
+#endif // wxUSE_ENH_METAFILE
 
 BOOL CALLBACK wxAbortProc(HDC WXUNUSED(hdc), int WXUNUSED(error))
 {