Printing improvements: GetPageInfo() gets called after the DC has
been set and after OnPreparePrinting() has been called so it can report the number of pages accurately; doesn't try to set number of pages in print dialog, in common with other Windows apps; wxHTML easy printing's preview shows number of pages correctly; preview scrollbars are set correctly; keyboard navigation improved git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22263 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -88,6 +88,7 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
|
||||
|
||||
printout->SetIsPreview(FALSE);
|
||||
|
||||
#if 0
|
||||
// 4/9/99, JACS: this is a silly place to allow preparation, considering
|
||||
// the DC and no parameters have been set in the printout object.
|
||||
// Moved further down.
|
||||
@@ -126,7 +127,12 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
|
||||
}
|
||||
else
|
||||
m_printDialogData.EnablePageNumbers(FALSE);
|
||||
#endif
|
||||
|
||||
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 = (wxDC *) NULL;
|
||||
@@ -171,6 +177,23 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
|
||||
|
||||
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;
|
||||
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);
|
||||
|
||||
int
|
||||
pagesPerCopy = m_printDialogData.GetToPage()-m_printDialogData.GetFromPage()+1,
|
||||
totalPages = pagesPerCopy * m_printDialogData.GetNoCopies(),
|
||||
|
Reference in New Issue
Block a user