Fixed clipped borders on scaled-to-fit images, and fixed a floating image layout bug.

This commit is contained in:
JulianSmart
2015-05-26 11:47:54 +01:00
parent 0ed1e641d2
commit ab4b7674c0

View File

@@ -2170,8 +2170,10 @@ bool wxRichTextParagraphLayoutBox::Layout(wxDC& dc, wxRichTextDrawingContext& co
if (wxRichTextBuffer::GetFloatingLayoutMode() && GetFloatCollector() && GetFloatCollector()->HasFloats())
{
int bottom = GetFloatCollector()->GetLastRectBottom();
if (bottom > maxHeight)
maxHeight = bottom;
// The floating objects are positioned relative to entire buffer, not this box
int maxFloatHeight = GetFloatCollector()->GetLastRectBottom() - GetPosition().y - topMargin;
if (maxFloatHeight > maxHeight)
maxHeight = maxFloatHeight;
}
if (attr.GetTextBoxAttr().GetSize().GetWidth().IsValid())
@@ -12063,14 +12065,22 @@ bool wxRichTextImage::LoadImageCache(wxDC& dc, bool resetCache, const wxSize& pa
sz = contentRect.GetSize();
}
// Take away space used by the image's margins
{
// Find the actual space available when margin is taken into account
wxRect marginRect, borderRect, contentRect, paddingRect, outlineRect;
marginRect = wxRect(0, 0, 100, 100); // To force GetBoxRects to return content rect
GetBoxRects(dc, buffer, GetAttributes(), marginRect, borderRect, contentRect, paddingRect, outlineRect);
sz += (contentRect.GetSize() - wxSize(100, 100));
}
// Use a minimum size to stop images becoming very small
parentWidth = wxMax(100, sz.GetWidth());
parentHeight = wxMax(100, sz.GetHeight());
if (buffer->GetRichTextCtrl())
// Start with a maximum width of the control size, even if not specified by the content,
// to minimize the amount of picture overlapping the right-hand side
maxWidth = parentWidth;
// Start with a maximum width of the control size, even if not specified by the content,
// to minimize the amount of picture overlapping the right-hand side
maxWidth = parentWidth;
}
}