starmath: Prefix n to SmCaretPos's Index
Change-Id: Ie1647d8143c4c38ebcf5111bffc291c26704c4c0 Reviewed-on: https://gerrit.libreoffice.org/32428 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Takeshi Abe <tabe@fixedpoint.jp>
This commit is contained in:
@@ -20,9 +20,10 @@
|
|||||||
|
|
||||||
/** Representation of caret position with an equation */
|
/** Representation of caret position with an equation */
|
||||||
struct SmCaretPos{
|
struct SmCaretPos{
|
||||||
SmCaretPos(SmNode* selectedNode = nullptr, int iIndex = 0) {
|
SmCaretPos(SmNode* selectedNode = nullptr, int iIndex = 0)
|
||||||
pSelectedNode = selectedNode;
|
: pSelectedNode(selectedNode)
|
||||||
Index = iIndex;
|
, nIndex(iIndex)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
/** Selected node */
|
/** Selected node */
|
||||||
SmNode* pSelectedNode;
|
SmNode* pSelectedNode;
|
||||||
@@ -36,11 +37,11 @@ struct SmCaretPos{
|
|||||||
*/
|
*/
|
||||||
//TODO: Special cases for SmBlankNode is needed
|
//TODO: Special cases for SmBlankNode is needed
|
||||||
//TODO: Consider forgetting about the todo above... As it's really unpleasant.
|
//TODO: Consider forgetting about the todo above... As it's really unpleasant.
|
||||||
int Index;
|
int nIndex;
|
||||||
/** True, if this is a valid caret position */
|
/** True, if this is a valid caret position */
|
||||||
bool IsValid() const { return pSelectedNode != nullptr; }
|
bool IsValid() const { return pSelectedNode != nullptr; }
|
||||||
bool operator==(const SmCaretPos &pos) const {
|
bool operator==(const SmCaretPos &pos) const {
|
||||||
return pos.pSelectedNode == pSelectedNode && Index == pos.Index;
|
return pos.pSelectedNode == pSelectedNode && nIndex == pos.nIndex;
|
||||||
}
|
}
|
||||||
/** Get the caret position after pNode, regardless of pNode
|
/** Get the caret position after pNode, regardless of pNode
|
||||||
*
|
*
|
||||||
|
@@ -17,7 +17,7 @@ SmCaretPosGraph::~SmCaretPosGraph() = default;
|
|||||||
SmCaretPosGraphEntry* SmCaretPosGraph::Add(SmCaretPos pos,
|
SmCaretPosGraphEntry* SmCaretPosGraph::Add(SmCaretPos pos,
|
||||||
SmCaretPosGraphEntry* left)
|
SmCaretPosGraphEntry* left)
|
||||||
{
|
{
|
||||||
SAL_WARN_IF( pos.Index < 0, "starmath", "Index shouldn't be -1!" );
|
SAL_WARN_IF( pos.nIndex < 0, "starmath", "nIndex shouldn't be -1!" );
|
||||||
auto entry = o3tl::make_unique<SmCaretPosGraphEntry>(pos, left, nullptr);
|
auto entry = o3tl::make_unique<SmCaretPosGraphEntry>(pos, left, nullptr);
|
||||||
SmCaretPosGraphEntry* e = entry.get();
|
SmCaretPosGraphEntry* e = entry.get();
|
||||||
//Set Left and Right to point to the entry itself if they are NULL
|
//Set Left and Right to point to the entry itself if they are NULL
|
||||||
|
@@ -184,7 +184,7 @@ void SmCursor::DeletePrev(OutputDevice* pDev){
|
|||||||
assert(nLineOffset >= 0);
|
assert(nLineOffset >= 0);
|
||||||
|
|
||||||
//If we're in front of a node who's parent is a TABLE
|
//If we're in front of a node who's parent is a TABLE
|
||||||
if(pLineParent->GetType() == NTABLE && mpPosition->CaretPos.Index == 0 && nLineOffset > 0){
|
if(pLineParent->GetType() == NTABLE && mpPosition->CaretPos.nIndex == 0 && nLineOffset > 0){
|
||||||
//Now we can merge with nLineOffset - 1
|
//Now we can merge with nLineOffset - 1
|
||||||
BeginEdit();
|
BeginEdit();
|
||||||
//Line to merge things into, so we can delete pLine
|
//Line to merge things into, so we can delete pLine
|
||||||
@@ -342,13 +342,13 @@ SmNodeList::iterator SmCursor::FindPositionInLineList(SmNodeList* pLineList,
|
|||||||
if((*it)->GetType() == NTEXT)
|
if((*it)->GetType() == NTEXT)
|
||||||
{
|
{
|
||||||
//Split textnode if needed
|
//Split textnode if needed
|
||||||
if(rCaretPos.Index > 0)
|
if(rCaretPos.nIndex > 0)
|
||||||
{
|
{
|
||||||
SmTextNode* pText = static_cast<SmTextNode*>(rCaretPos.pSelectedNode);
|
SmTextNode* pText = static_cast<SmTextNode*>(rCaretPos.pSelectedNode);
|
||||||
if (rCaretPos.Index == pText->GetText().getLength())
|
if (rCaretPos.nIndex == pText->GetText().getLength())
|
||||||
return ++it;
|
return ++it;
|
||||||
OUString str1 = pText->GetText().copy(0, rCaretPos.Index);
|
OUString str1 = pText->GetText().copy(0, rCaretPos.nIndex);
|
||||||
OUString str2 = pText->GetText().copy(rCaretPos.Index);
|
OUString str2 = pText->GetText().copy(rCaretPos.nIndex);
|
||||||
pText->ChangeText(str1);
|
pText->ChangeText(str1);
|
||||||
++it;
|
++it;
|
||||||
//Insert str2 as new text node
|
//Insert str2 as new text node
|
||||||
@@ -1462,12 +1462,12 @@ bool SmCursor::IsAtTailOfBracket(SmBracketType eBracketType, SmBraceNode** ppBra
|
|||||||
|
|
||||||
if (pNode->GetType() == NTEXT) {
|
if (pNode->GetType() == NTEXT) {
|
||||||
SmTextNode* pTextNode = static_cast<SmTextNode*>(pNode);
|
SmTextNode* pTextNode = static_cast<SmTextNode*>(pNode);
|
||||||
if (pos.Index < pTextNode->GetText().getLength()) {
|
if (pos.nIndex < pTextNode->GetText().getLength()) {
|
||||||
// The cursor is on a text node and at the middle of it.
|
// The cursor is on a text node and at the middle of it.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (pos.Index < 1) {
|
if (pos.nIndex < 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1533,9 +1533,9 @@ bool SmCursor::IsAtTailOfBracket(SmBracketType eBracketType, SmBraceNode** ppBra
|
|||||||
void SmCursor::MoveAfterBracket(SmBraceNode* pBraceNode)
|
void SmCursor::MoveAfterBracket(SmBraceNode* pBraceNode)
|
||||||
{
|
{
|
||||||
mpPosition->CaretPos.pSelectedNode = pBraceNode;
|
mpPosition->CaretPos.pSelectedNode = pBraceNode;
|
||||||
mpPosition->CaretPos.Index = 1;
|
mpPosition->CaretPos.nIndex = 1;
|
||||||
mpAnchor->CaretPos.pSelectedNode = pBraceNode;
|
mpAnchor->CaretPos.pSelectedNode = pBraceNode;
|
||||||
mpAnchor->CaretPos.Index = 1;
|
mpAnchor->CaretPos.nIndex = 1;
|
||||||
RequestRepaint();
|
RequestRepaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -176,7 +176,7 @@ SmCaretDrawingVisitor::SmCaretDrawingVisitor( OutputDevice& rDevice,
|
|||||||
|
|
||||||
void SmCaretDrawingVisitor::Visit( SmTextNode* pNode )
|
void SmCaretDrawingVisitor::Visit( SmTextNode* pNode )
|
||||||
{
|
{
|
||||||
long i = maPos.Index;
|
long i = maPos.nIndex;
|
||||||
|
|
||||||
mrDev.SetFont( pNode->GetFont( ) );
|
mrDev.SetFont( pNode->GetFont( ) );
|
||||||
|
|
||||||
@@ -212,7 +212,7 @@ void SmCaretDrawingVisitor::DefaultVisit( SmNode* pNode )
|
|||||||
SmNode* pLine = SmCursor::FindTopMostNodeInLine( pNode );
|
SmNode* pLine = SmCursor::FindTopMostNodeInLine( pNode );
|
||||||
|
|
||||||
//Find coordinates
|
//Find coordinates
|
||||||
long left = pNode->GetLeft( ) + maOffset.X( ) + ( maPos.Index == 1 ? pNode->GetWidth( ) : 0 );
|
long left = pNode->GetLeft( ) + maOffset.X( ) + ( maPos.nIndex == 1 ? pNode->GetWidth( ) : 0 );
|
||||||
long top = pLine->GetTop( ) + maOffset.Y( );
|
long top = pLine->GetTop( ) + maOffset.Y( );
|
||||||
long height = pLine->GetHeight( );
|
long height = pLine->GetHeight( );
|
||||||
long left_line = pLine->GetLeft( ) + maOffset.X( );
|
long left_line = pLine->GetLeft( ) + maOffset.X( );
|
||||||
@@ -241,7 +241,7 @@ void SmCaretPos2LineVisitor::Visit( SmTextNode* pNode )
|
|||||||
//Save device state
|
//Save device state
|
||||||
mpDev->Push( PushFlags::FONT | PushFlags::TEXTCOLOR );
|
mpDev->Push( PushFlags::FONT | PushFlags::TEXTCOLOR );
|
||||||
|
|
||||||
long i = maPos.Index;
|
long i = maPos.nIndex;
|
||||||
|
|
||||||
mpDev->SetFont( pNode->GetFont( ) );
|
mpDev->SetFont( pNode->GetFont( ) );
|
||||||
|
|
||||||
@@ -260,7 +260,7 @@ void SmCaretPos2LineVisitor::DefaultVisit( SmNode* pNode )
|
|||||||
{
|
{
|
||||||
//Vertical line ( code from SmCaretDrawingVisitor )
|
//Vertical line ( code from SmCaretDrawingVisitor )
|
||||||
Point p1 = pNode->GetTopLeft( );
|
Point p1 = pNode->GetTopLeft( );
|
||||||
if( maPos.Index == 1 )
|
if( maPos.nIndex == 1 )
|
||||||
p1.Move( pNode->GetWidth( ), 0 );
|
p1.Move( pNode->GetWidth( ), 0 );
|
||||||
|
|
||||||
maLine = SmCaretLine( p1.X( ), p1.Y( ), pNode->GetHeight( ) );
|
maLine = SmCaretLine( p1.X( ), p1.Y( ), pNode->GetHeight( ) );
|
||||||
@@ -528,10 +528,10 @@ SmSetSelectionVisitor::SmSetSelectionVisitor( SmCaretPos startPos, SmCaretPos en
|
|||||||
//Visit root node, this is special as this node cannot be selected, but its children can!
|
//Visit root node, this is special as this node cannot be selected, but its children can!
|
||||||
if(pTree->GetType() == NTABLE){
|
if(pTree->GetType() == NTABLE){
|
||||||
//Change state if maStartPos is in front of this node
|
//Change state if maStartPos is in front of this node
|
||||||
if( maStartPos.pSelectedNode == pTree && maStartPos.Index == 0 )
|
if( maStartPos.pSelectedNode == pTree && maStartPos.nIndex == 0 )
|
||||||
mbSelecting = !mbSelecting;
|
mbSelecting = !mbSelecting;
|
||||||
//Change state if maEndPos is in front of this node
|
//Change state if maEndPos is in front of this node
|
||||||
if( maEndPos.pSelectedNode == pTree && maEndPos.Index == 0 )
|
if( maEndPos.pSelectedNode == pTree && maEndPos.nIndex == 0 )
|
||||||
mbSelecting = !mbSelecting;
|
mbSelecting = !mbSelecting;
|
||||||
SAL_WARN_IF(mbSelecting, "starmath", "Caret positions needed to set mbSelecting about, shouldn't be possible!");
|
SAL_WARN_IF(mbSelecting, "starmath", "Caret positions needed to set mbSelecting about, shouldn't be possible!");
|
||||||
|
|
||||||
@@ -575,10 +575,10 @@ void SmSetSelectionVisitor::SetSelectedOnAll( SmNode* pSubTree, bool IsSelected
|
|||||||
|
|
||||||
void SmSetSelectionVisitor::DefaultVisit( SmNode* pNode ) {
|
void SmSetSelectionVisitor::DefaultVisit( SmNode* pNode ) {
|
||||||
//Change state if maStartPos is in front of this node
|
//Change state if maStartPos is in front of this node
|
||||||
if( maStartPos.pSelectedNode == pNode && maStartPos.Index == 0 )
|
if( maStartPos.pSelectedNode == pNode && maStartPos.nIndex == 0 )
|
||||||
mbSelecting = !mbSelecting;
|
mbSelecting = !mbSelecting;
|
||||||
//Change state if maEndPos is in front of this node
|
//Change state if maEndPos is in front of this node
|
||||||
if( maEndPos.pSelectedNode == pNode && maEndPos.Index == 0 )
|
if( maEndPos.pSelectedNode == pNode && maEndPos.nIndex == 0 )
|
||||||
mbSelecting = !mbSelecting;
|
mbSelecting = !mbSelecting;
|
||||||
|
|
||||||
//Cache current state
|
//Cache current state
|
||||||
@@ -621,12 +621,12 @@ void SmSetSelectionVisitor::DefaultVisit( SmNode* pNode ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Change state if maStartPos is after this node
|
//Change state if maStartPos is after this node
|
||||||
if( maStartPos.pSelectedNode == pNode && maStartPos.Index == 1 )
|
if( maStartPos.pSelectedNode == pNode && maStartPos.nIndex == 1 )
|
||||||
{
|
{
|
||||||
mbSelecting = !mbSelecting;
|
mbSelecting = !mbSelecting;
|
||||||
}
|
}
|
||||||
//Change state if maEndPos is after of this node
|
//Change state if maEndPos is after of this node
|
||||||
if( maEndPos.pSelectedNode == pNode && maEndPos.Index == 1 )
|
if( maEndPos.pSelectedNode == pNode && maEndPos.nIndex == 1 )
|
||||||
{
|
{
|
||||||
mbSelecting = !mbSelecting;
|
mbSelecting = !mbSelecting;
|
||||||
}
|
}
|
||||||
@@ -635,10 +635,10 @@ void SmSetSelectionVisitor::DefaultVisit( SmNode* pNode ) {
|
|||||||
void SmSetSelectionVisitor::VisitCompositionNode( SmStructureNode* pNode )
|
void SmSetSelectionVisitor::VisitCompositionNode( SmStructureNode* pNode )
|
||||||
{
|
{
|
||||||
//Change state if maStartPos is in front of this node
|
//Change state if maStartPos is in front of this node
|
||||||
if( maStartPos.pSelectedNode == pNode && maStartPos.Index == 0 )
|
if( maStartPos.pSelectedNode == pNode && maStartPos.nIndex == 0 )
|
||||||
mbSelecting = !mbSelecting;
|
mbSelecting = !mbSelecting;
|
||||||
//Change state if maEndPos is in front of this node
|
//Change state if maEndPos is in front of this node
|
||||||
if( maEndPos.pSelectedNode == pNode && maEndPos.Index == 0 )
|
if( maEndPos.pSelectedNode == pNode && maEndPos.nIndex == 0 )
|
||||||
mbSelecting = !mbSelecting;
|
mbSelecting = !mbSelecting;
|
||||||
|
|
||||||
//Cache current state
|
//Cache current state
|
||||||
@@ -656,10 +656,10 @@ void SmSetSelectionVisitor::VisitCompositionNode( SmStructureNode* pNode )
|
|||||||
pNode->SetSelected( WasSelecting && mbSelecting );
|
pNode->SetSelected( WasSelecting && mbSelecting );
|
||||||
|
|
||||||
//Change state if maStartPos is after this node
|
//Change state if maStartPos is after this node
|
||||||
if( maStartPos.pSelectedNode == pNode && maStartPos.Index == 1 )
|
if( maStartPos.pSelectedNode == pNode && maStartPos.nIndex == 1 )
|
||||||
mbSelecting = !mbSelecting;
|
mbSelecting = !mbSelecting;
|
||||||
//Change state if maEndPos is after of this node
|
//Change state if maEndPos is after of this node
|
||||||
if( maEndPos.pSelectedNode == pNode && maEndPos.Index == 1 )
|
if( maEndPos.pSelectedNode == pNode && maEndPos.nIndex == 1 )
|
||||||
mbSelecting = !mbSelecting;
|
mbSelecting = !mbSelecting;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -667,9 +667,9 @@ void SmSetSelectionVisitor::Visit( SmTextNode* pNode ) {
|
|||||||
long i1 = -1,
|
long i1 = -1,
|
||||||
i2 = -1;
|
i2 = -1;
|
||||||
if( maStartPos.pSelectedNode == pNode )
|
if( maStartPos.pSelectedNode == pNode )
|
||||||
i1 = maStartPos.Index;
|
i1 = maStartPos.nIndex;
|
||||||
if( maEndPos.pSelectedNode == pNode )
|
if( maEndPos.pSelectedNode == pNode )
|
||||||
i2 = maEndPos.Index;
|
i2 = maEndPos.nIndex;
|
||||||
|
|
||||||
long start, end;
|
long start, end;
|
||||||
pNode->SetSelected(true);
|
pNode->SetSelected(true);
|
||||||
|
Reference in New Issue
Block a user