]> git.saurik.com Git - wxWidgets.git/commitdiff
[ wxwindows-Patches-1947680 ] wxMac: Fixes number of printouts and more
authorRobert Roebling <robert@roebling.de>
Thu, 22 May 2008 18:11:46 +0000 (18:11 +0000)
committerRobert Roebling <robert@roebling.de>
Thu, 22 May 2008 18:11:46 +0000 (18:11 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53703 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/cmndata.cpp
src/mac/carbon/printmac.cpp

index a9a9c05f8e11d1b1a4fc1c29336650ef4c544a31..3c04d1d0b961b7e4b4eca4ecf0014578a3989e5c 100644 (file)
@@ -342,7 +342,12 @@ wxPrintDialogData::wxPrintDialogData(const wxPrintData& printData)
     m_printMinPage = 1;
     m_printMaxPage = 9999;
     m_printNoCopies = 1;
+    // On Mac the Print dialog always defaults to "All Pages"
+#ifdef __WXMAC__
+    m_printAllPages = true;
+#else
     m_printAllPages = false;
+#endif
     m_printCollate = false;
     m_printToFile = false;
     m_printSelection = false;
index 1de459588ad53fc29146d4074df08e3502ee0783..6c34d746f951f17040e1f331fc99b10cc5e5a61c 100644 (file)
@@ -349,7 +349,11 @@ void wxMacCarbonPrintData::TransferTo( wxPrintDialogData* data )
 
 void wxMacCarbonPrintData::TransferFrom( wxPrintDialogData* data )
 {
-    PMSetPageRange( m_macPrintSettings , data->GetMinPage() , data->GetMaxPage() ) ;
+    // Respect the value of m_printAllPages
+    if ( data->GetAllPages() )
+        PMSetPageRange( m_macPrintSettings , data->GetMinPage() , (UInt32) kPMPrintAllPages ) ;
+    else
+        PMSetPageRange( m_macPrintSettings , data->GetMinPage() , data->GetMaxPage() ) ;
     PMSetCopies( m_macPrintSettings , data->GetNoCopies() , false ) ;
     PMSetFirstPage( m_macPrintSettings , data->GetFromPage() , false ) ;
 
@@ -457,58 +461,34 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt)
     m_printDialogData.SetMinPage(minPage);
     m_printDialogData.SetMaxPage(maxPage);
 
-    wxWindow *win = CreateAbortWindow(parent, printout);
-    wxSafeYield(win,true);
-
-    if (!win)
-    {
-        wxEndBusyCursor();
-        wxMessageBox(wxT("Sorry, could not create an abort dialog."), wxT("Print Error"), wxOK, parent);
-        delete dc;
-
-        return false;
-    }
-
-    sm_abortWindow = win;
-    sm_abortWindow->Show(true);
-    wxSafeYield(win,true);
-
     printout->OnBeginPrinting();
 
     bool keepGoing = true;
 
-    int copyCount;
-    for (copyCount = 1; copyCount <= m_printDialogData.GetNoCopies(); copyCount ++)
+    if (!printout->OnBeginDocument(m_printDialogData.GetFromPage(), m_printDialogData.GetToPage()))
     {
-        if (!printout->OnBeginDocument(m_printDialogData.GetFromPage(), m_printDialogData.GetToPage()))
-        {
             wxEndBusyCursor();
             wxMessageBox(wxT("Could not start printing."), wxT("Print Error"), wxOK, parent);
-            break;
-        }
-        if (sm_abortIt)
-            break;
+    }
 
-        int pn;
-        for (pn = m_printDialogData.GetFromPage();
+    int pn;
+    for (pn = m_printDialogData.GetFromPage();
         keepGoing && (pn <= m_printDialogData.GetToPage()) && printout->HasPage(pn);
         pn++)
+    {
+        if (sm_abortIt)
         {
-            if (sm_abortIt)
-            {
                 keepGoing = false;
                 break;
-            }
-            else
-            {
-                wxSafeYield(win,true);
+        }
+        else
+        {
                 dc->StartPage();
                 keepGoing = printout->OnPrintPage(pn);
                 dc->EndPage();
-            }
         }
-        printout->OnEndDocument();
     }
+    printout->OnEndDocument();
 
     printout->OnEndPrinting();