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:
Julian Smart
2003-07-23 20:30:19 +00:00
parent 3d16b99ece
commit d2b354f9c9
12 changed files with 205 additions and 155 deletions

View File

@@ -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(),