summaryrefslogtreecommitdiff
path: root/starmath
diff options
context:
space:
mode:
authorTakeshi Abe <tabe@fixedpoint.jp>2016-08-31 16:42:16 +0900
committerTakeshi Abe <tabe@fixedpoint.jp>2016-08-31 09:41:15 +0000
commitecafca50e9a6d0fac3c809f275342f571a1470df (patch)
tree1385226c71f473bdd9e2fe2c1a6df78ea4ad355e /starmath
parent5b473e72787d2b61601ecea59ad8f5bf5f738229 (diff)
Replace use of our own SmNodeIterator with range-based for loop
in starmath/source/cursor.cxx and starmath/qa/cppunit/mock-visitor.hxx. Change-Id: I7733d5d17bb03532d6c4f1d6967c69d65bc3bede Reviewed-on: https://gerrit.libreoffice.org/28538 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Takeshi Abe <tabe@fixedpoint.jp>
Diffstat (limited to 'starmath')
-rw-r--r--starmath/inc/node.hxx3
-rw-r--r--starmath/qa/cppunit/mock-visitor.hxx8
-rw-r--r--starmath/source/cursor.cxx60
3 files changed, 44 insertions, 27 deletions
diff --git a/starmath/inc/node.hxx b/starmath/inc/node.hxx
index 1e61304281c4..3ecacb1988b7 100644
--- a/starmath/inc/node.hxx
+++ b/starmath/inc/node.hxx
@@ -307,6 +307,9 @@ public:
virtual void GetAccessibleText( OUStringBuffer &rText ) const override;
+ SmNodeArray::iterator begin() {return aSubNodes.begin();}
+ SmNodeArray::iterator end() {return aSubNodes.end();}
+
/** Get the index of a child node
*
* Returns -1, if pSubNode isn't a subnode of this.
diff --git a/starmath/qa/cppunit/mock-visitor.hxx b/starmath/qa/cppunit/mock-visitor.hxx
index 5c7c7af08884..2c7f6bf77efc 100644
--- a/starmath/qa/cppunit/mock-visitor.hxx
+++ b/starmath/qa/cppunit/mock-visitor.hxx
@@ -190,9 +190,11 @@ public:
private:
/** Auxiliary method for visiting the children of a pNode */
void VisitChildren( SmStructureNode* pNode ) {
- SmNodeIterator it( pNode );
- while( it.Next() )
- it->Accept( this );
+ for (auto pChild : *pNode)
+ {
+ if (pChild)
+ pChild->Accept(this);
+ }
}
};
diff --git a/starmath/source/cursor.cxx b/starmath/source/cursor.cxx
index 30d4c26db49c..bdf5d31113ca 100644
--- a/starmath/source/cursor.cxx
+++ b/starmath/source/cursor.cxx
@@ -1232,11 +1232,15 @@ SmNode* SmCursor::FindTopMostNodeInLine(SmNode* pSNode, bool MoveUpIfSelected){
}
SmNode* SmCursor::FindSelectedNode(SmNode* pNode){
- SmNodeIterator it(pNode);
- while(it.Next()){
- if(it->IsSelected())
- return it.Current();
- SmNode* pRetVal = FindSelectedNode(it.Current());
+ if(pNode->GetNumSubNodes() == 0)
+ return nullptr;
+ for(auto pChild : *static_cast<SmStructureNode*>(pNode))
+ {
+ if(!pChild)
+ continue;
+ if(pChild->IsSelected())
+ return pChild;
+ SmNode* pRetVal = FindSelectedNode(pChild);
if(pRetVal)
return pRetVal;
}
@@ -1244,22 +1248,24 @@ SmNode* SmCursor::FindSelectedNode(SmNode* pNode){
}
SmNodeList* SmCursor::LineToList(SmStructureNode* pLine, SmNodeList* list){
- SmNodeIterator it(pLine);
- while(it.Next()){
- switch(it->GetType()){
+ for(auto pChild : *pLine)
+ {
+ if (!pChild)
+ continue;
+ switch(pChild->GetType()){
case NLINE:
case NUNHOR:
case NEXPRESSION:
case NBINHOR:
case NALIGN:
case NFONT:
- LineToList(static_cast<SmStructureNode*>(it.Current()), list);
+ LineToList(static_cast<SmStructureNode*>(pChild), list);
break;
case NERROR:
- delete it.Current();
+ delete pChild;
break;
default:
- list->push_back(it.Current());
+ list->push_back(pChild);
}
}
SmNodeArray emptyArray(0);
@@ -1270,22 +1276,24 @@ SmNodeList* SmCursor::LineToList(SmStructureNode* pLine, SmNodeList* list){
void SmCursor::CloneLineToClipboard(SmStructureNode* pLine, SmClipboard* pClipboard){
SmCloningVisitor aCloneFactory;
- SmNodeIterator it(pLine);
- while(it.Next()){
- if( IsLineCompositionNode( it.Current() ) )
- CloneLineToClipboard( static_cast<SmStructureNode*>(it.Current()), pClipboard );
- else if( it->IsSelected() && it->GetType() != NERROR ) {
+ for(auto pChild : *pLine)
+ {
+ if (!pChild)
+ continue;
+ if( IsLineCompositionNode( pChild ) )
+ CloneLineToClipboard( static_cast<SmStructureNode*>(pChild), pClipboard );
+ else if( pChild->IsSelected() && pChild->GetType() != NERROR ) {
//Only clone selected text from SmTextNode
- if(it->GetType() == NTEXT) {
- SmTextNode *pText = static_cast<SmTextNode*>(it.Current());
- std::unique_ptr<SmTextNode> pClone(new SmTextNode( it->GetToken(), pText->GetFontDesc() ));
+ if(pChild->GetType() == NTEXT) {
+ SmTextNode *pText = static_cast<SmTextNode*>(pChild);
+ std::unique_ptr<SmTextNode> pClone(new SmTextNode( pChild->GetToken(), pText->GetFontDesc() ));
int start = pText->GetSelectionStart(),
length = pText->GetSelectionEnd() - pText->GetSelectionStart();
pClone->ChangeText(pText->GetText().copy(start, length));
pClone->SetScaleMode(pText->GetScaleMode());
pClipboard->push_back(std::move(pClone));
} else
- pClipboard->push_back(std::unique_ptr<SmNode>(aCloneFactory.Clone(it.Current())));
+ pClipboard->push_back(std::unique_ptr<SmNode>(aCloneFactory.Clone(pChild)));
}
}
}
@@ -1305,12 +1313,16 @@ bool SmCursor::IsLineCompositionNode(SmNode* pNode){
}
int SmCursor::CountSelectedNodes(SmNode* pNode){
+ if(pNode->GetNumSubNodes() == 0)
+ return 0;
int nCount = 0;
- SmNodeIterator it(pNode);
- while(it.Next()){
- if(it->IsSelected() && !IsLineCompositionNode(it.Current()))
+ for(auto pChild : *static_cast<SmStructureNode*>(pNode))
+ {
+ if (!pChild)
+ continue;
+ if(pChild->IsSelected() && !IsLineCompositionNode(pChild))
nCount++;
- nCount += CountSelectedNodes(it.Current());
+ nCount += CountSelectedNodes(pChild);
}
return nCount;
}