From e04873441433af0a6aa6832f0de62ce87fee5ac3 Mon Sep 17 00:00:00 2001 From: Le Tan Date: Sat, 19 May 2018 10:20:00 +0800 Subject: [PATCH] editor: refine heading sequence --- src/vmainwindow.cpp | 7 +++++-- src/vmdeditor.cpp | 13 ++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/vmainwindow.cpp b/src/vmainwindow.cpp index 12cea016..7d121480 100644 --- a/src/vmainwindow.cpp +++ b/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(p_tab); - m_headingSequenceAct->setChecked(mdTab && editMode && file->isModifiable() + m_headingSequenceAct->setChecked(mdTab + && editMode + && file->isModifiable() && mdTab->isHeadingSequenceEnabled()); // Find/Replace diff --git a/src/vmdeditor.cpp b/src/vmdeditor.cpp index 34a048f4..dde892e3 100644 --- a/src/vmdeditor.cpp +++ b/src/vmdeditor.cpp @@ -426,7 +426,7 @@ static QString headerSequenceStr(const QVector &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 &p_headerRegio QVector 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 &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);