editor: refine heading sequence

This commit is contained in:
Le Tan 2018-05-19 10:20:00 +08:00
parent 5eb8c4d224
commit e048734414
2 changed files with 9 additions and 11 deletions

View File

@ -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

View File

@ -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);