fixed wxHtmlWindow::SelectionToText() to correctly insert newlines after single-cell paragraphs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@56333 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -99,6 +99,8 @@ All (GUI):
|
|||||||
|
|
||||||
- Fixed wxHTML's pagebreaks computation in tables (D.J.Stauffer).
|
- Fixed wxHTML's pagebreaks computation in tables (D.J.Stauffer).
|
||||||
- Fixed wxRichTextCtrl input that uses Alt on Mac OS X, for example Polish Pro input.
|
- Fixed wxRichTextCtrl input that uses Alt on Mac OS X, for example Polish Pro input.
|
||||||
|
- Fixed wxHtmlWindow::SelectionToText() to correctly insert newlines after
|
||||||
|
single-cell paragraphs.
|
||||||
|
|
||||||
All (Unix):
|
All (Unix):
|
||||||
|
|
||||||
|
@@ -881,21 +881,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 << wxT('\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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user