Add wxHtmlContainerCell::Detach()

This allows manipulating the HTML DOM from the outside, e.g. to detach
a header element in order to be able to repeat it on all pages.
This commit is contained in:
Vadim Zeitlin
2018-08-25 21:16:55 +02:00
parent 2895e5c4a1
commit a59f5932df
4 changed files with 116 additions and 0 deletions

View File

@@ -1159,6 +1159,43 @@ void wxHtmlContainerCell::InsertCell(wxHtmlCell *f)
void wxHtmlContainerCell::Detach(wxHtmlCell *cell)
{
wxHtmlCell* const firstChild = GetFirstChild();
if ( cell == firstChild )
{
m_Cells = cell->GetNext();
if ( m_LastCell == cell )
m_LastCell = NULL;
}
else // Not the first child.
{
for ( wxHtmlCell* prev = firstChild;; )
{
wxHtmlCell* const next = prev->GetNext();
// We can't reach the end of the children list without finding this
// cell, normally.
wxCHECK_RET( next, "Detaching cell which is not our child" );
if ( cell == next )
{
prev->SetNext(cell->GetNext());
if ( m_LastCell == cell )
m_LastCell = prev;
break;
}
prev = next;
}
}
cell->SetParent(NULL);
cell->SetNext(NULL);
}
void wxHtmlContainerCell::SetAlign(const wxHtmlTag& tag)
{
wxString alg;