// 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;
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);
int charHeight = dc->GetCharHeight();
- int headerHeight = charHeight + headerMargin/scale;
+ int headerHeight = (int) (charHeight + headerMargin/scale);
headerRect = wxRect(rect.x, rect.y, rect.width, headerHeight);
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);