From dc0cea5e0e044f13b2168587242a10022c2ac7e9 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Thu, 22 May 2008 18:11:46 +0000 Subject: [PATCH] [ wxwindows-Patches-1947680 ] wxMac: Fixes number of printouts and more git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53703 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/cmndata.cpp | 5 ++++ src/mac/carbon/printmac.cpp | 50 +++++++++++-------------------------- 2 files changed, 20 insertions(+), 35 deletions(-) diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp index a9a9c05f8e..3c04d1d0b9 100644 --- a/src/common/cmndata.cpp +++ b/src/common/cmndata.cpp @@ -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; diff --git a/src/mac/carbon/printmac.cpp b/src/mac/carbon/printmac.cpp index 1de459588a..6c34d746f9 100644 --- a/src/mac/carbon/printmac.cpp +++ b/src/mac/carbon/printmac.cpp @@ -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(); -- 2.47.2