fixed wxHtmlWindow::SelectionToText() to correctly insert newlines after single-cell paragraphs

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56334 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík 2008-10-15 15:43:45 +00:00
parent 427c415b93
commit 7f8f381c0f

View File

@ -890,21 +890,27 @@ wxString wxHtmlWindow::DoSelectionToText(wxHtmlSelection *sel)
return wxEmptyString; return wxEmptyString;
wxClientDC dc(this); wxClientDC dc(this);
const wxHtmlCell *end = sel->GetToCell();
wxString text; wxString text;
wxHtmlTerminalCellsInterator i(sel->GetFromCell(), end);
if ( i ) wxHtmlTerminalCellsInterator i(sel->GetFromCell(), sel->GetToCell());
{ const wxHtmlCell *prev = NULL;
text << i->ConvertToText(sel);
++i;
}
const wxHtmlCell *prev = *i;
while ( i ) while ( i )
{ {
if ( prev->GetParent() != i->GetParent() ) // When converting HTML content to plain text, the entire paragraph
text << _T('\n'); // (container in wxHTML) goes on single line. A new paragraph (that
text << i->ConvertToText(*i == end ? sel : NULL); // should go on its own line) has its own container. Therefore, the
// simplest way of detecting where to insert newlines in plain text
// is to check if the parent container changed -- if it did, we moved
// to a new paragraph.
if ( prev && prev->GetParent() != i->GetParent() )
text << '\n';
// NB: we don't need to pass the selection to ConvertToText() in the
// middle of the selected text; it's only useful when only part of
// a cell is selected
text << i->ConvertToText(sel);
prev = *i; prev = *i;
++i; ++i;
} }