summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authormae <qt-info@nokia.com>2009-09-17 12:47:16 +0200
committermae <qt-info@nokia.com>2009-09-17 12:47:16 +0200
commit554f4fe6799182bd07e62996abac6a6ca7c66037 (patch)
tree6a28c5bd556e224335b53dace074c17c65ba5880 /src/plugins
parent061865efa4f8299e391cc09c4751b5543a12ba62 (diff)
downloadqt-creator-554f4fe6799182bd07e62996abac6a6ca7c66037.tar.gz
ensure visibility for extra blocks that are auto inserted
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/cppeditor/cppeditor.cpp8
-rw-r--r--src/plugins/cppeditor/cppeditor.h2
-rw-r--r--src/plugins/texteditor/basetexteditor.cpp17
-rw-r--r--src/plugins/texteditor/basetexteditor.h4
4 files changed, 22 insertions, 9 deletions
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index ec75b63269..9ea95cc405 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -1356,13 +1356,13 @@ bool CPPEditor::autoBackspace(QTextCursor &cursor)
return false;
}
-void CPPEditor::paragraphSeparatorAboutToBeInserted(QTextCursor &cursor)
+int CPPEditor::paragraphSeparatorAboutToBeInserted(QTextCursor &cursor)
{
if (characterAt(cursor.position()-1) != QLatin1Char('{'))
- return;
+ return 0;
if (!contextAllowsAutoParentheses(cursor))
- return;
+ return 0;
// verify that we indeed do have an extra opening brace in the document
@@ -1387,7 +1387,9 @@ void CPPEditor::paragraphSeparatorAboutToBeInserted(QTextCursor &cursor)
}
cursor.setPosition(pos);
m_allowSkippingOfBlockEnd = true;
+ return 1;
}
+ return 0;
}
bool CPPEditor::contextAllowsAutoParentheses(const QTextCursor &cursor) const
diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h
index cb2f0d303a..90c39a1ab7 100644
--- a/src/plugins/cppeditor/cppeditor.h
+++ b/src/plugins/cppeditor/cppeditor.h
@@ -215,7 +215,7 @@ protected:
bool isElectricCharacter(const QChar &ch) const;
QString autoComplete(QTextCursor &cursor, const QString &text) const;
bool autoBackspace(QTextCursor &cursor);
- void paragraphSeparatorAboutToBeInserted(QTextCursor &cursor);
+ int paragraphSeparatorAboutToBeInserted(QTextCursor &cursor);
bool contextAllowsAutoParentheses(const QTextCursor &cursor) const;
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 930039bbcc..39408ae0ff 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -890,7 +890,7 @@ void BaseTextEditor::keyPressEvent(QKeyEvent *e)
const TabSettings &ts = d->m_document->tabSettings();
cursor.beginEditBlock();
- paragraphSeparatorAboutToBeInserted(cursor); // virtual
+ int extraBlocks = paragraphSeparatorAboutToBeInserted(cursor); // virtual
if (ts.m_autoIndent) {
cursor.insertBlock();
@@ -902,6 +902,16 @@ void BaseTextEditor::keyPressEvent(QKeyEvent *e)
}
cursor.endEditBlock();
e->accept();
+
+ if (extraBlocks > 0) {
+ QTextCursor ensureVisible = cursor;
+ while (extraBlocks > 0) {
+ --extraBlocks;
+ ensureVisible.movePosition(QTextCursor::NextBlock);
+ }
+ setTextCursor(ensureVisible);
+ }
+
setTextCursor(cursor);
return;
} else if (!ro
@@ -3279,9 +3289,10 @@ bool BaseTextEditor::autoBackspace(QTextCursor &cursor)
return false;
}
-void BaseTextEditor::paragraphSeparatorAboutToBeInserted(QTextCursor &cursor)
+int BaseTextEditor::paragraphSeparatorAboutToBeInserted(QTextCursor &cursor)
{
- Q_UNUSED(cursor)
+ Q_UNUSED(cursor);
+ return 0;
}
void BaseTextEditor::indentBlock(QTextDocument *, QTextBlock, QChar)
diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h
index 595b55865d..2015a10fcb 100644
--- a/src/plugins/texteditor/basetexteditor.h
+++ b/src/plugins/texteditor/basetexteditor.h
@@ -509,8 +509,8 @@ protected:
virtual QString autoComplete(QTextCursor &cursor, const QString &text) const;
// Handles backspace. When returning true, backspace processing is stopped
virtual bool autoBackspace(QTextCursor &cursor);
- // Hook to insert special characters on enter
- virtual void paragraphSeparatorAboutToBeInserted(QTextCursor &cursor);
+ // Hook to insert special characters on enter. Returns the number of extra blocks inserted.
+ virtual int paragraphSeparatorAboutToBeInserted(QTextCursor &cursor);
// Indent a text block based on previous line. Default does nothing
virtual void indentBlock(QTextDocument *doc, QTextBlock block, QChar typedChar);
// Indent at cursor. Calls indentBlock for selection or current line.