diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 88e145a0e58c1b34271a1ea68d714b11794a3b71..d5b088396a53293f6ea855b07e58f6ea4be4f5e4 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -2504,14 +2504,13 @@ void BaseTextEditor::extraAreaMouseEvent(QMouseEvent *e) } } - if (e->type() == QEvent::MouseButtonPress || e->type() == QEvent::MouseButtonDblClick) { if (e->button() == Qt::LeftButton) { if (d->m_codeFoldingVisible && TextBlockUserData::canCollapse(cursor.block()) && !TextBlockUserData::hasClosingCollapseInside(cursor.block().next()) && collapseBox(cursor.block()).contains(e->pos())) { - setTextCursor(cursor); toggleBlockVisible(cursor.block()); + d->moveCursorVisible(false); } else if (d->m_marksVisible && e->pos().x() > markWidth) { QTextCursor selection = cursor; selection.setVisualNavigation(true); @@ -3392,15 +3391,16 @@ void BaseTextEditor::setIfdefedOutBlocks(const QList<BaseTextEditor::BlockRange> } -void BaseTextEditorPrivate::moveCursorVisible() +void BaseTextEditorPrivate::moveCursorVisible(bool ensureVisible) { QTextCursor cursor = q->textCursor(); if (!cursor.block().isVisible()) { cursor.setVisualNavigation(true); - cursor.movePosition(QTextCursor::PreviousBlock); + cursor.movePosition(QTextCursor::Up); q->setTextCursor(cursor); } - q->ensureCursorVisible(); + if (ensureVisible) + q->ensureCursorVisible(); } void BaseTextEditor::collapse() diff --git a/src/plugins/texteditor/basetexteditor_p.h b/src/plugins/texteditor/basetexteditor_p.h index 270b7444f42953a712557d52e9081d131b84fbb8..9da5b27248c56983873c3f7d88d1766740870319 100644 --- a/src/plugins/texteditor/basetexteditor_p.h +++ b/src/plugins/texteditor/basetexteditor_p.h @@ -218,7 +218,7 @@ public: QTextCursor m_findScope; QTextCursor m_selectBlockAnchor; - void moveCursorVisible(); + void moveCursorVisible(bool ensureVisible = true); }; } // namespace Internal