X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5be55d562f584025d966980f5fc4272db60c6eae..443c834d8d40068cd6ede099ea4d68d622a606b6:/src/mac/printmac.cpp diff --git a/src/mac/printmac.cpp b/src/mac/printmac.cpp index 1a0f8d5121..487123bad0 100644 --- a/src/mac/printmac.cpp +++ b/src/mac/printmac.cpp @@ -261,7 +261,11 @@ void wxMacCarbonPrintData::TransferFrom( wxPrintDialogData* data ) PMSetPageRange( m_macPrintSettings , data->GetMinPage() , data->GetMaxPage() ) ; PMSetCopies( m_macPrintSettings , data->GetNoCopies() , false ) ; PMSetFirstPage( m_macPrintSettings , data->GetFromPage() , false ) ; - PMSetLastPage( m_macPrintSettings , data->GetToPage() , false ) ; + + int toPage = data->GetToPage(); + if (toPage < 1) + toPage = data->GetFromPage(); + PMSetLastPage( m_macPrintSettings , toPage , false ) ; } void wxMacCarbonPrintData::CopyFrom( wxNativePrintData* d ) @@ -443,8 +447,11 @@ void wxMacClassicPrintData::TransferTo( wxPageSetupData* data ) void wxMacClassicPrintData::TransferFrom( wxPrintDialogData* data ) { + int toPage = data->GetToPage(); + if (toPage < 1) + toPage = data->GetFromPage(); (**m_macPrintSettings).prJob.iFstPage = data->GetFromPage() ; - (**m_macPrintSettings).prJob.iLstPage = data->GetToPage() ; + (**m_macPrintSettings).prJob.iLstPage = toPage; } void wxMacClassicPrintData::TransferTo( wxPrintDialogData* data ) @@ -535,38 +542,11 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt) return FALSE; printout->SetIsPreview(FALSE); - 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) - return FALSE; - - m_printDialogData.SetMinPage(minPage); - m_printDialogData.SetMaxPage(maxPage); - if (fromPage != 0) - m_printDialogData.SetFromPage(fromPage); - if (toPage != 0) - m_printDialogData.SetToPage(toPage); - - if (minPage != 0) - { - m_printDialogData.EnablePageNumbers(TRUE); - if (m_printDialogData.GetFromPage() < m_printDialogData.GetMinPage()) - m_printDialogData.SetFromPage(m_printDialogData.GetMinPage()); - else if (m_printDialogData.GetFromPage() > m_printDialogData.GetMaxPage()) - m_printDialogData.SetFromPage(m_printDialogData.GetMaxPage()); - if (m_printDialogData.GetToPage() > m_printDialogData.GetMaxPage()) - m_printDialogData.SetToPage(m_printDialogData.GetMaxPage()); - else if (m_printDialogData.GetToPage() < m_printDialogData.GetMinPage()) - m_printDialogData.SetToPage(m_printDialogData.GetMinPage()); - } - else - m_printDialogData.EnablePageNumbers(FALSE); - + if (m_printDialogData.GetMinPage() < 1) + m_printDialogData.SetMinPage(1); + if (m_printDialogData.GetMaxPage() < 1) + m_printDialogData.SetMaxPage(9999); + // Create a suitable device context wxDC *dc = NULL; if (prompt) @@ -609,6 +589,24 @@ bool wxMacPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt) // Create an abort window wxBeginBusyCursor(); + 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) + { + wxEndBusyCursor(); + return FALSE; + } + + // Only set min and max, because from and to have been + // set by the user + m_printDialogData.SetMinPage(minPage); + m_printDialogData.SetMaxPage(maxPage); + wxWindow *win = CreateAbortWindow(parent, printout); wxSafeYield(win,true);