X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8995db52f311ef389652b0ac3aff39bde723c5ac..ccec90930cfc38bd4347a97f46481242d9fd23cd:/src/richtext/richtextbuffer.cpp diff --git a/src/richtext/richtextbuffer.cpp b/src/richtext/richtextbuffer.cpp index e7a1a328f5..c8a276be44 100644 --- a/src/richtext/richtextbuffer.cpp +++ b/src/richtext/richtextbuffer.cpp @@ -3607,7 +3607,7 @@ bool wxRichTextParagraph::Layout(wxDC& dc, const wxRect& rect, int style) wxArrayInt partialExtents; wxSize paraSize; - int paraDescent; + int paraDescent = 0; // This calculates the partial text extents GetRangeSize(GetRange(), paraSize, paraDescent, dc, wxRICHTEXT_UNFORMATTED|wxRICHTEXT_CACHE_SIZE, wxPoint(0,0), & partialExtents); @@ -6535,7 +6535,11 @@ bool wxRichTextBuffer::PasteFromClipboard(long position) delete richTextBuffer; } } - else if (wxTheClipboard->IsSupported(wxDF_TEXT) || wxTheClipboard->IsSupported(wxDF_UNICODETEXT)) + else if (wxTheClipboard->IsSupported(wxDF_TEXT) +#if wxUSE_UNICODE + || wxTheClipboard->IsSupported(wxDF_UNICODETEXT) +#endif // wxUSE_UNICODE + ) { wxTextDataObject data; wxTheClipboard->GetData(data); @@ -6599,9 +6603,12 @@ bool wxRichTextBuffer::CanPasteFromClipboard() const #if wxUSE_CLIPBOARD && wxUSE_DATAOBJ if (!wxTheClipboard->IsOpened() && wxTheClipboard->Open()) { - if (wxTheClipboard->IsSupported(wxDF_TEXT) || wxTheClipboard->IsSupported(wxDF_UNICODETEXT) || - wxTheClipboard->IsSupported(wxDataFormat(wxRichTextBufferDataObject::GetRichTextBufferFormatId())) || - wxTheClipboard->IsSupported(wxDF_BITMAP)) + if (wxTheClipboard->IsSupported(wxDF_TEXT) +#if wxUSE_UNICODE + || wxTheClipboard->IsSupported(wxDF_UNICODETEXT) +#endif // wxUSE_UNICODE + || wxTheClipboard->IsSupported(wxDataFormat(wxRichTextBufferDataObject::GetRichTextBufferFormatId())) + || wxTheClipboard->IsSupported(wxDF_BITMAP)) { canPaste = true; } @@ -6866,26 +6873,59 @@ bool wxRichTextStdRenderer::EnumerateStandardBulletNames(wxArrayString& bulletNa IMPLEMENT_DYNAMIC_CLASS(wxRichTextBox, wxRichTextCompositeObject) wxRichTextBox::wxRichTextBox(wxRichTextObject* parent): - wxRichTextParagraphLayoutBox(parent) + wxRichTextCompositeObject(parent) { } /// Draw the item -bool wxRichTextBox::Draw(wxDC& dc, const wxRichTextRange& range, const wxRichTextRange& selectionRange, const wxRect& rect, int descent, int style) +bool wxRichTextBox::Draw(wxDC& dc, const wxRichTextRange& range, const wxRichTextRange& selectionRange, const wxRect& WXUNUSED(rect), int descent, int style) { - return wxRichTextParagraphLayoutBox::Draw(dc, range, selectionRange, rect, descent, style); + wxRichTextObjectList::compatibility_iterator node = m_children.GetFirst(); + while (node) + { + wxRichTextObject* child = node->GetData(); + + wxRect childRect = wxRect(child->GetPosition(), child->GetCachedSize()); + child->Draw(dc, range, selectionRange, childRect, descent, style); + + node = node->GetNext(); + } + return true; } /// Lay the item out bool wxRichTextBox::Layout(wxDC& dc, const wxRect& rect, int style) { - return wxRichTextParagraphLayoutBox::Layout(dc, rect, style); + wxRichTextObjectList::compatibility_iterator node = m_children.GetFirst(); + while (node) + { + wxRichTextObject* child = node->GetData(); + child->Layout(dc, rect, style); + + node = node->GetNext(); + } + m_dirty = false; + return true; + } /// Copy void wxRichTextBox::Copy(const wxRichTextBox& obj) { - wxRichTextParagraphLayoutBox::Copy(obj); + wxRichTextCompositeObject::Copy(obj); +} + +/// Get/set the size for the given range. Assume only has one child. +bool wxRichTextBox::GetRangeSize(const wxRichTextRange& range, wxSize& size, int& descent, wxDC& dc, int flags, wxPoint position, wxArrayInt* partialExtents) const +{ + wxRichTextObjectList::compatibility_iterator node = m_children.GetFirst(); + if (node) + { + wxRichTextObject* child = node->GetData(); + return child->GetRangeSize(range, size, descent, dc, flags, position, partialExtents); + } + else + return false; } /*