diff --git a/Common/3dParty/html/css/src/CCssCalculator_Private.cpp b/Common/3dParty/html/css/src/CCssCalculator_Private.cpp
index 1038a06d5f..49d4d29bf2 100644
--- a/Common/3dParty/html/css/src/CCssCalculator_Private.cpp
+++ b/Common/3dParty/html/css/src/CCssCalculator_Private.cpp
@@ -563,7 +563,7 @@ namespace NSCSS
const std::map, CCompiledStyle>::const_iterator oItem = m_mUsedStyles.find(arSelectors);
- if (oItem != m_mUsedStyles.cend())
+ if (oItem != m_mUsedStyles.cend() && (arSelectors.back().m_wsId.empty() || !HaveStylesById(arSelectors.back().m_wsId)))
{
arSelectors.back().SetCompiledStyle(new CCompiledStyle(oItem->second));
return true;
diff --git a/Common/3dParty/html/css/src/CNode.cpp b/Common/3dParty/html/css/src/CNode.cpp
index 2e017f81b7..6c3a4282dd 100644
--- a/Common/3dParty/html/css/src/CNode.cpp
+++ b/Common/3dParty/html/css/src/CNode.cpp
@@ -113,8 +113,7 @@ namespace NSCSS
bool CNode::operator==(const CNode& oNode) const
{
- return((m_wsId == oNode.m_wsId) &&
- (m_wsName == oNode.m_wsName) &&
+ return((m_wsName == oNode.m_wsName) &&
(m_wsClass == oNode.m_wsClass) &&
(m_wsStyle == oNode.m_wsStyle) &&
(m_mAttributes == oNode.m_mAttributes));
diff --git a/HtmlFile2/HTMLReader.cpp b/HtmlFile2/HTMLReader.cpp
index d5465bcf36..e8be041ddb 100644
--- a/HtmlFile2/HTMLReader.cpp
+++ b/HtmlFile2/HTMLReader.cpp
@@ -1100,9 +1100,6 @@ bool CHTMLReader::ReadTable(std::vector& arSelectors)
oTable.SetAlign(pStyle->m_oDisplay.GetHAlign().ToWString());
//------
- if (!m_mTags[HTML_TAG(TABLE)]->Open(arSelectors, &oTable))
- return false;
-
int nDeath = m_oLightReader.GetDepth();
while(m_oLightReader.ReadNextSiblingNode(nDeath))
{
@@ -1149,7 +1146,10 @@ bool CHTMLReader::ReadTable(std::vector& arSelectors)
m_mTags[HTML_TAG(TD)]->Open(arSelectors, boost::tuple(*arCells[unCol], oTable, unCol, parse_mode, eRowPosition));\
\
if (0 != arCells[unCol]->GetData()->GetCurSize())\
+ {\
WriteToStringBuilder(*(arCells[unCol]->GetData()), *(m_pWriter->GetCurrentDocument()));\
+ arCells[unCol]->GetData()->Clear();\
+ }\
else\
m_pWriter->WriteEmptyParagraph();\
\
@@ -1159,6 +1159,9 @@ bool CHTMLReader::ReadTable(std::vector& arSelectors)
m_mTags[HTML_TAG(TR)]->Close(arSelectors);\
}}
+ if (!m_mTags[HTML_TAG(TABLE)]->Open(arSelectors, &oTable))
+ return false;
+
if (!oTable.HaveHeader())
{
if (m_mTags[HTML_TAG(TR)]->Open(arSelectors, boost::tuple(nullptr, oTable, ERowParseMode::Header, ERowPosition::First)))
diff --git a/HtmlFile2/Tags/MDTags.cpp b/HtmlFile2/Tags/MDTags.cpp
index 1476d91048..bb0c4e16bb 100644
--- a/HtmlFile2/Tags/MDTags.cpp
+++ b/HtmlFile2/Tags/MDTags.cpp
@@ -354,6 +354,8 @@ bool CTableRow::Open(const std::vector& arSelectors, co
if (!ValidWriter() || oExtraData.empty() || typeid(DataForRow) != oExtraData.type())
return false;
+ m_pWriter->EnteredTable();
+
const DataForRow& oDataForRow(boost::any_cast(oExtraData));
const CStorageTable& oStorageTable{boost::get<1>(oDataForRow)};