Browse Source

editor: refine heading sequence

Le Tan 7 years ago
parent
commit
e048734414
2 changed files with 9 additions and 11 deletions
  1. 5 2
      src/vmainwindow.cpp
  2. 4 9
      src/vmdeditor.cpp

+ 5 - 2
src/vmainwindow.cpp

@@ -1903,10 +1903,13 @@ void VMainWindow::updateActionsStateFromTab(const VEditTab *p_tab)
     setActionsEnabled(m_editToolBar, file && editMode);
 
     // Handle heading sequence act independently.
-    m_headingSequenceAct->setEnabled(editMode && file->isModifiable()
+    m_headingSequenceAct->setEnabled(editMode
+                                     && file->isModifiable()
                                      && isHeadingSequenceApplicable());
     const VMdTab *mdTab = dynamic_cast<const VMdTab *>(p_tab);
-    m_headingSequenceAct->setChecked(mdTab && editMode && file->isModifiable()
+    m_headingSequenceAct->setChecked(mdTab
+                                     && editMode
+                                     && file->isModifiable()
                                      && mdTab->isHeadingSequenceEnabled());
 
     // Find/Replace

+ 4 - 9
src/vmdeditor.cpp

@@ -426,7 +426,7 @@ static QString headerSequenceStr(const QVector<int> &p_sequence)
 }
 
 static void insertSequenceToHeader(QTextCursor& p_cursor,
-                                   QTextBlock p_block,
+                                   const QTextBlock &p_block,
                                    QRegExp &p_reg,
                                    QRegExp &p_preReg,
                                    const QString &p_seq)
@@ -525,14 +525,11 @@ void VMdEditor::updateHeadersHelper(const QVector<VElementRegion> &p_headerRegio
     QVector<int> seqs(7, 0);
     QRegExp preReg(VUtils::c_headerPrefixRegExp);
     int curLevel = baseLevel - 1;
-    QTextCursor cursor = textCursorW();
-
-    int blockNo = cursor.block().blockNumber();
-    int posToBlockEnd = cursor.block().length() - cursor.positionInBlock();
-
+    QTextCursor cursor(doc);
     if(autoSequence || p_configChanged) {
         cursor.beginEditBlock();
     }
+
     for (int i = 0; i < headers.size(); ++i) {
         VTableOfContentItem &item = headers[i];
         while (item.m_level > curLevel + 1) {
@@ -565,11 +562,9 @@ void VMdEditor::updateHeadersHelper(const QVector<VElementRegion> &p_headerRegio
             }
         }
     }
+
     if (autoSequence || p_configChanged) {
-        QTextBlock block = doc->findBlockByNumber(blockNo);
-        cursor.setPosition(block.position() + block.length() - posToBlockEnd);
         cursor.endEditBlock();
-        setTextCursorW(cursor);
     }
 
     emit headersChanged(m_headers);