SetBackgroundImage(wxNullBitmap);
m_Parser->SetDC(dc);
-
- delete m_Cell;
+ if (m_Cell)
+ {
+ delete m_Cell;
+ // notice that it's important to set m_Cell to NULL here before calling
+ // Parse() below, even if it will be overwritten by its return value:
+ // without this we may crash if it's used from inside Parse()
+ m_Cell = NULL;
+ }
m_Cell = (wxHtmlContainerCell*) m_Parser->Parse(newsrc);
delete dc;
m_Cell->SetIndent(m_Borders, wxHTML_INDENT_ALL, wxHTML_UNITS_PIXELS);
}
else
{
+ // Go to next visible cell in current container, if it exists. This
+ // yields a bit better (even though still imperfect) results in that
+ // there's better chance of using a suitable cell for upper Y
+ // coordinate value. See bug #11406 for additional discussion.
+ const wxHtmlCell *c_save = c;
+ while ( c && c->IsFormattingCell() )
+ c = c->GetNext();
+ if ( !c )
+ c = c_save;
+
int y;
for (y = 0; c != NULL; c = c->GetParent()) y += c->GetPosY();