diff options
author | David Boddie <david.boddie@nokia.com> | 2010-10-19 14:01:14 +0200 |
---|---|---|
committer | David Boddie <david.boddie@nokia.com> | 2010-10-19 14:01:14 +0200 |
commit | d6844c7a7e04d08932a037d98629d1eb2e3858a0 (patch) | |
tree | bd960e54ccb32974dc9d84efbb6b767547a4d7e7 /src/plugins/texteditor | |
parent | 8e6569663ecbf7389b3df5d86f4ce2d1102b16c0 (diff) | |
parent | 6efdc7cff0937efeea89a5f98df725a08f1c70a2 (diff) | |
download | qt-creator-2.0.tar.gz |
Merge branch '2.0' of scm.dev.nokia.troll.no:creator/mainline into 2.02.0
Diffstat (limited to 'src/plugins/texteditor')
-rw-r--r-- | src/plugins/texteditor/basetextdocument.cpp | 6 | ||||
-rw-r--r-- | src/plugins/texteditor/basetextdocumentlayout.cpp | 3 | ||||
-rw-r--r-- | src/plugins/texteditor/basetexteditor.cpp | 4 |
3 files changed, 10 insertions, 3 deletions
diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp index d28e2e4dee..3dc1832710 100644 --- a/src/plugins/texteditor/basetextdocument.cpp +++ b/src/plugins/texteditor/basetextdocument.cpp @@ -165,8 +165,8 @@ bool BaseTextDocument::save(const QString &fileName) // When saving the current editor, make sure to maintain the cursor position for undo Core::IEditor *currentEditor = Core::EditorManager::instance()->currentEditor(); if (BaseTextEditorEditable *editable = qobject_cast<BaseTextEditorEditable*>(currentEditor)) { - if (editable->file() == this) - cursor = editable->editor()->textCursor(); + if (editable->file() == this) + cursor.setPosition(editable->editor()->textCursor().position()); } cursor.beginEditBlock(); @@ -373,6 +373,7 @@ void BaseTextDocument::cleanWhitespace(const QTextCursor &cursor) { bool hasSelection = cursor.hasSelection(); QTextCursor copyCursor = cursor; + copyCursor.setVisualNavigation(false); copyCursor.beginEditBlock(); cleanWhitespace(copyCursor, true, true); if (!hasSelection) @@ -383,6 +384,7 @@ void BaseTextDocument::cleanWhitespace(const QTextCursor &cursor) void BaseTextDocument::cleanWhitespace(QTextCursor &cursor, bool cleanIndentation, bool inEntireDocument) { BaseTextDocumentLayout *documentLayout = qobject_cast<BaseTextDocumentLayout*>(m_document->documentLayout()); + Q_ASSERT(cursor.visualNavigation() == false); QTextBlock block = m_document->findBlock(cursor.selectionStart()); QTextBlock end; diff --git a/src/plugins/texteditor/basetextdocumentlayout.cpp b/src/plugins/texteditor/basetextdocumentlayout.cpp index 9255f2e1a2..11632f0c63 100644 --- a/src/plugins/texteditor/basetextdocumentlayout.cpp +++ b/src/plugins/texteditor/basetextdocumentlayout.cpp @@ -175,6 +175,9 @@ void TextBlockUserData::doCollapse(const QTextBlock& block, bool visible) return; } + if (!visible && !cursor.block().next().isValid()) + return; // WORKAROUND for a QPlainTextEdit bug, we cannot collapse at the very end, would crash + QTextBlock b = block.next(); while (b < cursor.block()) { b.setVisible(visible); diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index b856d941eb..71ae6141ff 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -1451,6 +1451,8 @@ void BaseTextEditor::setTextCursor(const QTextCursor &cursor) QTextCursor c = cursor; c.setVisualNavigation(true); QPlainTextEdit::setTextCursor(c); + if (!c.block().isVisible()) + expand(); if (selectionChange) slotSelectionChanged(); } @@ -3238,7 +3240,7 @@ void BaseTextEditor::updateCurrentLineHighlight() if (block.isValid()) d->m_extraArea->update(blockBoundingGeometry(block).translated(offset).toAlignedRect()); block = document()->findBlockByNumber(cursorBlockNumber); - if (block.isValid()) + if (block.isValid() && block.isVisible()) d->m_extraArea->update(blockBoundingGeometry(block).translated(offset).toAlignedRect()); d->m_cursorBlockNumber = cursorBlockNumber; } |