diff options
author | hjk <qtc-committer@nokia.com> | 2011-08-05 08:47:53 +0200 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2011-08-05 08:49:13 +0200 |
commit | 30076b1c97b8246a106f98b2a57a2f3fc3326110 (patch) | |
tree | a22af29c30a19872bdcfc6659a62d3066eda764f /src/plugins/fakevim | |
parent | e0a667067b1782326710201a560fb8ae0d5fe1da (diff) | |
download | qt-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.cpp | 27 |
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 |