Changed: Render p and div as block level elements

This commit is contained in:
Nimetu 2015-12-19 20:39:40 +02:00
parent b5f70a462d
commit a7ec7dfcbb
2 changed files with 25 additions and 1 deletions

View file

@ -573,6 +573,14 @@ namespace NLGUI
return _LinkClass.back().c_str();
}
std::vector<bool> _BlockLevelElement;
inline const bool isBlockLevelElement() const
{
if (_BlockLevelElement.empty())
return false;
return _BlockLevelElement.back();
}
// Divs (i.e. interface group)
std::vector<class CInterfaceGroup*> _Divs;
inline CInterfaceGroup *getDiv() const

View file

@ -1145,6 +1145,7 @@ namespace NLGUI
case HTML_DIV:
{
_BlockLevelElement.push_back(true);
registerAnchorName(MY_HTML_DIV);
if (present[MY_HTML_DIV_NAME] && value[MY_HTML_DIV_NAME])
@ -1204,6 +1205,8 @@ namespace NLGUI
inst->setPosRef(Hotspot_TL);
inst->setParentPosRef(Hotspot_TL);
getDiv()->addGroup(inst);
_BlockLevelElement.back() = false;
}
else
{
@ -1220,6 +1223,11 @@ namespace NLGUI
}
}
}
if (isBlockLevelElement())
{
newParagraph(0);
}
}
break;
@ -2118,12 +2126,20 @@ namespace NLGUI
popIfNotEmpty (_GlobalColor);
endParagraph();
break;
case HTML_P:
endParagraph();
break;
case HTML_PRE:
popIfNotEmpty (_PRE);
break;
case HTML_DIV:
if (isBlockLevelElement())
{
endParagraph();
}
_DivName = "";
popIfNotEmpty (_Divs);
popIfNotEmpty (_BlockLevelElement);
break;
case HTML_TABLE: