OSDN Git Service

MSHTML VBufBackend: don't set updateAncestor on nodes from within collectAndUpdateTab...
authorMichael Curran <mick@kulgan.net>
Thu, 8 Nov 2012 03:03:37 +0000 (13:03 +1000)
committerMichael Curran <mick@kulgan.net>
Thu, 8 Nov 2012 03:03:37 +0000 (13:03 +1000)
nvdaHelper/vbufBackends/mshtml/mshtml.cpp

index f0a7ba4..b5eb132 100755 (executable)
@@ -641,15 +641,11 @@ wostringstream tempStringStream;
                tempStringStream.str(L"");\r
                tempStringStream<<ID;\r
                attribsMap[L"table-id"]=tempStringStream.str();\r
-       } else if(tableInfo&&(nodeName.compare(L"THEAD")==0||nodeName.compare(L"TBODY")==0||nodeName.compare(L"TFOOT")==0)) {\r
-               parentNode->updateAncestor=tableInfo->tableNode;\r
        } else if(tableInfo&&nodeName.compare(L"TR")==0) {\r
                ++tableInfo->curRowNumber;\r
                tableInfo->curColumnNumber = 0;\r
-               parentNode->updateAncestor=tableInfo->tableNode;\r
        } if(tableInfo&&(nodeName.compare(L"TD")==0||nodeName.compare(L"TH")==0)) {\r
                ++tableInfo->curColumnNumber;\r
-               parentNode->updateAncestor=tableInfo->tableNode;\r
                handleColsSpannedByPrevRows(*tableInfo);\r
                tempStringStream.str(L"");\r
                tempStringStream<<tableInfo->tableID;\r
@@ -859,6 +855,12 @@ VBufStorage_fieldNode_t* MshtmlVBufBackend_t::fillVBuf(VBufStorage_buffer_t* buf
        nhAssert(parentNode);\r
        previousNode=NULL;\r
 \r
+       //All inner parts of a table (rows, cells etc) if they are changed must re-render the entire table.\r
+       //This must be done even for nodes with display:none.\r
+       if(tableInfo&&(nodeName.compare(L"THEAD")==0||nodeName.compare(L"TBODY")==0||nodeName.compare(L"TFOOT")==0||nodeName.compare(L"TR")==0||nodeName.compare(L"TH")==0||nodeName.compare(L"TD")==0)) {\r
+               parentNode->updateAncestor=tableInfo->tableNode;\r
+       }\r
+\r
        parentNode->isHidden=(hidden||dontRender);\r
        //We do not want to render any content for dontRender nodes\r
        if(dontRender) {\r