Fixed: Multiline text inside lists

--HG--
branch : develop
hg/compatibility-develop
Nimetu 7 years ago
parent c22b361dc2
commit d6dcf7415a

@ -714,7 +714,12 @@ namespace NLGUI
std::vector<CCellParams> _CellParams;
// Indentation
uint _Indent;
std::vector<uint> _Indent;
inline uint getIndent() const {
if (_Indent.empty())
return 0;
return _Indent.back();
}
// Current node is a title
bool _Title;

@ -94,6 +94,7 @@ namespace NLGUI
_XReal = _YReal = _WReal = _HReal = 0;
_X = _Y = _W = _H = 0;
//_Snap = 1;
_MarginLeft = 0;
_PosRef = Hotspot_BL;
_ParentPosRef = Hotspot_BL;
@ -178,6 +179,9 @@ namespace NLGUI
sint32 getH() const { return (_Active?_H:0); }
sint32 getH(bool bTestActive) const { return (bTestActive?(_Active?_H:0):_H); }
void setMarginLeft(sint32 m) { _MarginLeft = m; }
sint32 getMarginLeft() const { return _MarginLeft; }
/**
* Get the max width used by the window.
*
@ -568,6 +572,8 @@ namespace NLGUI
sint32 _W;
sint32 _H;
sint32 _MarginLeft;
//sint32 _Snap;
// position references e.g. : _PosRef=BL, _ParentPosref=MM : the bottom left corner of the element

@ -93,7 +93,7 @@ namespace NLGUI
void setMultiLineSpace (sint nMultiLineSpace);
void setMultiLineMaxWOnly (bool state);
void setMultiLineClipEndSpace (bool state); // use it for multiline edit box for instance
void setFirstLineX (uint firstLineX);
void setFirstLineX (sint firstLineX);
void setMultiMaxLine(uint l) { _MultiMaxLine = l; }
void setMultiMinLine(uint l) { _MultiMinLine = l; }
@ -398,7 +398,7 @@ namespace NLGUI
uint _TextSelectionEnd;
// First line X coordinate
uint _FirstLineX;
sint _FirstLineX;
/// Dynamic tooltips
std::vector<CCtrlToolTip*> _Tooltips;

@ -2181,8 +2181,9 @@ namespace NLGUI
sint32 indent = LIIndent;
// list-style-type: outside
if (_CurrentViewLink)
indent -= _CurrentViewLink->getMaxUsedW();
getParagraph()->setFirstViewIndent(indent);
{
getParagraph()->setFirstViewIndent(-_CurrentViewLink->getMaxUsedW());
}
flushString ();
@ -2238,8 +2239,7 @@ namespace NLGUI
if (present[MY_HTML_TABLE_CELLPADDING] && value[MY_HTML_TABLE_CELLPADDING])
fromString(value[MY_HTML_TABLE_CELLPADDING], table->CellPadding);
// Table must fit the container size
table->setMarginLeft(getIndent());
addHtmlGroup (table, 0);
_Tables.push_back(table);
@ -2247,6 +2247,7 @@ namespace NLGUI
// Add a cell pointer
_Cells.push_back(NULL);
_TR.push_back(false);
_Indent.push_back(0);
}
break;
case HTML_TH:
@ -2328,7 +2329,12 @@ namespace NLGUI
_Cells.back()->NewLine = getTR();
table->addChild (_Cells.back());
// reusing indent pushed by table
_Indent.back() = 0;
newParagraph(TDBeginSpace);
// indent is already 0, getParagraph()->setMarginLeft(0); // maybe setIndent(0) if LI is using one
// Reset TR flag
if (!_TR.empty())
@ -2418,7 +2424,7 @@ namespace NLGUI
_UL.push_back(HTMLOListElement(1, "square"));
// if LI is already present
_LI = _UL.size() > 1 || _DL.size() > 1;
_Indent += ULIndent;
_Indent.push_back(getIndent() + ULIndent);
endParagraph();
break;
case HTML_OBJECT:
@ -2489,6 +2495,13 @@ namespace NLGUI
case HTML_DT:
if (!_DL.empty())
{
// close DT if still open
if (_DL.back().DD)
{
_DL.back().DD = false;
popIfNotEmpty(_Indent);
}
// see if this is the first <dt>, closing tag not required
if (!_DL.back().DT)
{
@ -2519,8 +2532,8 @@ namespace NLGUI
if (!_DL.back().DD)
{
_Indent += ULIndent;
_DL.back().DD = true;
_Indent.push_back(getIndent() + ULIndent);
}
if (!_LI)
@ -2547,7 +2560,7 @@ namespace NLGUI
_UL.push_back(HTMLOListElement(start, type));
// if LI is already present
_LI = _UL.size() > 1 || _DL.size() > 1;
_Indent += ULIndent;
_Indent.push_back(getIndent() + ULIndent);
endParagraph();
}
break;
@ -2659,6 +2672,7 @@ namespace NLGUI
popIfNotEmpty (_TR);
popIfNotEmpty (_Cells);
popIfNotEmpty (_Tables);
popIfNotEmpty (_Indent);
endParagraph();
// Add a cell
break;
@ -2801,13 +2815,9 @@ namespace NLGUI
case HTML_UL:
if (!_UL.empty())
{
if (_Indent > ULIndent)
_Indent = _Indent - ULIndent;
else
_Indent = 0;
endParagraph();
popIfNotEmpty(_UL);
popIfNotEmpty(_Indent);
}
break;
case HTML_DL:
@ -2824,10 +2834,7 @@ namespace NLGUI
// unclosed DD
if (_DL.back().DD)
{
if (_Indent > ULIndent)
_Indent = _Indent - ULIndent;
else
_Indent = 0;
popIfNotEmpty(_Indent);
}
popIfNotEmpty (_DL);
@ -2846,12 +2853,8 @@ namespace NLGUI
// parser will process two DD in a row as nested when first DD is not closed
if (_DL.back().DD)
{
if (_Indent > ULIndent)
_Indent = _Indent - ULIndent;
else
_Indent = 0;
_DL.back().DD = false;
popIfNotEmpty(_Indent);
}
}
break;
@ -2964,7 +2967,7 @@ namespace NLGUI
_Connecting = false;
_CurrentViewLink = NULL;
_CurrentViewImage = NULL;
_Indent = 0;
_Indent.clear();
_LI = false;
_SelectOption = false;
_GroupListAdaptor = NULL;
@ -4033,7 +4036,7 @@ namespace NLGUI
CGroupParagraph *newParagraph = new CGroupParagraph(CViewBase::TCtorParam());
newParagraph->setResizeFromChildH(true);
newParagraph->setIndent(_Indent);
newParagraph->setMarginLeft(getIndent());
// Add to the group
addHtmlGroup (newParagraph, beginSpace);
@ -4767,7 +4770,7 @@ namespace NLGUI
_FontOblique.clear();
_FontUnderlined.clear();
_FontStrikeThrough.clear();
_Indent = 0;
_Indent.clear();
_LI = false;
_UL.clear();
_DL.clear();

@ -509,7 +509,7 @@ namespace NLGUI
// ------------------------------------------------------------------------------------------------
void CInterfaceElement::updateCoords()
{
_XReal = _X;
_XReal = _X + _MarginLeft;
_YReal = _Y;
_WReal = getW();
_HReal = getH();
@ -526,7 +526,7 @@ namespace NLGUI
if (el == NULL)
return;
_XReal += el->_XReal;
_XReal += el->_XReal - el->_MarginLeft;
_YReal += el->_YReal;
THotSpot hsParent = _ParentPosRef;

@ -1457,7 +1457,7 @@ namespace NLGUI
}
CViewBase::updateCoords();
_XReal += _OffsetX;
_XReal += _OffsetX + _MarginLeft;
_YReal += _OffsetY;
//update all children elements
@ -1468,7 +1468,7 @@ namespace NLGUI
pIE->updateCoords();
}
_XReal -= _OffsetX;
_XReal -= _OffsetX - _MarginLeft;
_YReal -= _OffsetY;
}
@ -1958,9 +1958,9 @@ namespace NLGUI
newSciH = newSciH - ((newSciY+newSciH)-(oldSciY+oldSciH));
}
newSciXDest = newSciX;
newSciXDest = newSciX - _MarginLeft;
newSciYDest = newSciY;
newSciWDest = newSciW;
newSciWDest = newSciW + _MarginLeft;
newSciHDest = newSciH;
}

@ -2494,7 +2494,7 @@ namespace NLGUI
}
// ***************************************************************************
void CViewText::setFirstLineX(uint firstLineX)
void CViewText::setFirstLineX(sint firstLineX)
{
_FirstLineX = firstLineX;
}

Loading…
Cancel
Save