X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/44219ff04fedc5ede9842494fa29fbcb1fec04b0..c68dea664de326088fc81e15180fe5140d20e5c3:/src/richtext/richtextprint.cpp diff --git a/src/richtext/richtextprint.cpp b/src/richtext/richtextprint.cpp index 0032487f4c..8652db7c63 100644 --- a/src/richtext/richtextprint.cpp +++ b/src/richtext/richtextprint.cpp @@ -80,18 +80,22 @@ void wxRichTextPrintout::OnPreparePrinting() // child is a paragraph wxRichTextParagraph* child = wxDynamicCast(node->GetData(), wxRichTextParagraph); wxASSERT (child != NULL); - + wxRichTextLineList::compatibility_iterator node2 = child->GetLines().GetFirst(); while (node2) { wxRichTextLine* line = node2->GetData(); - + // Set the line to the page-adjusted position line->SetPosition(wxPoint(line->GetPosition().x, line->GetPosition().y - yOffset)); int lineY = child->GetPosition().y + line->GetPosition().y; - if ((lineY + line->GetSize().y) > rect.GetBottom()) + // Break the page if either we're going off the bottom, or this paragraph specifies + // an explicit page break + + if (((lineY + line->GetSize().y) > rect.GetBottom()) || + ((node2 == child->GetLines().GetFirst()) && child->GetAttributes().HasPageBreak())) { // New page starting at this line int newY = rect.y; @@ -324,8 +328,8 @@ void wxRichTextPrintout::CalculateScaling(wxDC* dc, wxRect& textRect, wxRect& he dc->SetUserScale(overallScale, overallScale); - wxRect rect(marginLeft/scale, marginTop/scale, - (pageWidth - marginLeft - marginRight)/scale, (pageHeight - marginTop - marginBottom)/scale); + wxRect rect((int) (marginLeft/scale), (int) (marginTop/scale), + (int) ((pageWidth - marginLeft - marginRight)/scale), (int)((pageHeight - marginTop - marginBottom)/scale)); headerRect = wxRect(0, 0, 0, 0); @@ -344,7 +348,7 @@ void wxRichTextPrintout::CalculateScaling(wxDC* dc, wxRect& textRect, wxRect& he int charHeight = dc->GetCharHeight(); - int headerHeight = charHeight + headerMargin/scale; + int headerHeight = (int) (charHeight + headerMargin/scale); headerRect = wxRect(rect.x, rect.y, rect.width, headerHeight); @@ -369,7 +373,7 @@ void wxRichTextPrintout::CalculateScaling(wxDC* dc, wxRect& textRect, wxRect& he int charHeight = dc->GetCharHeight(); - int footerHeight = charHeight + footerMargin/scale; + int footerHeight = (int) (charHeight + footerMargin/scale); footerRect = wxRect(rect.x, rect.y + rect.height, rect.width, footerHeight);