summaryrefslogtreecommitdiff
path: root/src/plugins/fakevim
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2011-08-05 08:47:53 +0200
committerhjk <qthjk@ovi.com>2011-08-05 08:49:13 +0200
commit30076b1c97b8246a106f98b2a57a2f3fc3326110 (patch)
treea22af29c30a19872bdcfc6659a62d3066eda764f /src/plugins/fakevim
parente0a667067b1782326710201a560fb8ae0d5fe1da (diff)
downloadqt-creator-30076b1c97b8246a106f98b2a57a2f3fc3326110.tar.gz
fakevim: remove visually selected contents before pasting.
Task-number: QTCREATORBUG-5605 Change-Id: Iee28b1acaeb4d8ad073bfadb0aab277f11b5001f Reviewed-on: http://codereview.qt.nokia.com/2669 Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'src/plugins/fakevim')
-rw-r--r--src/plugins/fakevim/fakevimhandler.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 082c2f6e46..fa63f3d8f6 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -4555,6 +4555,27 @@ void FakeVimHandler::Private::pasteText(bool afterCursor)
{
const QString text = g.registers[m_register].contents;
const QStringList lines = text.split(QChar('\n'));
+
+ beginEditBlock();
+
+ if (isVisualCharMode()) {
+ leaveVisualMode();
+ m_submode = DeleteSubMode;
+ finishMovement();
+ } else if (isVisualLineMode()) {
+ leaveVisualMode();
+ m_rangemode = RangeLineMode;
+ yankText(currentRange(), m_register);
+ removeText(currentRange());
+ handleStartOfLine();
+ } else if (isVisualBlockMode()) {
+ leaveVisualMode();
+ m_rangemode = RangeBlockMode;
+ yankText(currentRange(), m_register);
+ removeText(currentRange());
+ setPosition(qMin(position(), anchor()));
+ }
+
switch (g.registers[m_register].rangemode) {
case RangeCharMode: {
m_targetColumn = 0;
@@ -4573,7 +4594,6 @@ void FakeVimHandler::Private::pasteText(bool afterCursor)
case RangeLineModeExclusive: {
moveToStartOfLine();
m_targetColumn = 0;
- beginEditBlock();
QTextCursor tc = cursor();
for (int i = count(); --i >= 0; ) {
bool lastLine = document()->lastBlock() == this->block();
@@ -4596,12 +4616,10 @@ void FakeVimHandler::Private::pasteText(bool afterCursor)
}
}
moveToFirstNonBlankOnLine();
- endEditBlock();
break;
}
case RangeBlockAndTailMode:
case RangeBlockMode: {
- beginEditBlock();
QTextBlock block = this->block();
if (afterCursor)
moveRight();
@@ -4629,10 +4647,11 @@ void FakeVimHandler::Private::pasteText(bool afterCursor)
block = block.next();
}
moveLeft();
- endEditBlock();
break;
}
}
+
+ endEditBlock();
}
QString FakeVimHandler::Private::lineContents(int line) const