summaryrefslogtreecommitdiff
path: root/src/plugins/fakevim
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2012-04-11 14:11:07 +0200
committerhjk <qthjk@ovi.com>2012-04-17 11:20:37 +0200
commitb79f13df6abb2c98c5acc312981e02ed04a138bb (patch)
treed57b49fe0ec614ec0cd082d229fea29c1c48ba7e /src/plugins/fakevim
parent87fcf7ebea7eb7fb5c1f91d89d2bacde234f5f98 (diff)
downloadqt-creator-b79f13df6abb2c98c5acc312981e02ed04a138bb.tar.gz
fakevim: make sure pending input is only processed once
Change-Id: I0c6141eff49413f66cfee9a1f117279cdfcd4f36 Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'src/plugins/fakevim')
-rw-r--r--src/plugins/fakevim/fakevimhandler.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 68ceafac3f..cec8b885af 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -1417,7 +1417,7 @@ EventResult FakeVimHandler::Private::handleKey(const Input &input)
if (m_mode == InsertMode || m_mode == ReplaceMode || m_mode == CommandMode) {
g.pendingInput.append(input);
const char code = m_mode == InsertMode ? 'i' : 'n';
- if (g.mappings[code].mappingDone(&g.pendingInput))
+ if (g.mappings.value(code).mappingDone(&g.pendingInput))
return handleKey2();
if (g.inputTimer != -1)
killTimer(g.inputTimer);
@@ -1429,34 +1429,33 @@ EventResult FakeVimHandler::Private::handleKey(const Input &input)
EventResult FakeVimHandler::Private::handleKey2()
{
+ Inputs pendingInput = g.pendingInput;
+ g.pendingInput.clear();
if (m_mode == InsertMode) {
EventResult result = EventUnhandled;
- foreach (const Input &in, g.pendingInput) {
+ foreach (const Input &in, pendingInput) {
EventResult r = handleInsertMode(in);
if (r == EventHandled)
result = EventHandled;
}
- g.pendingInput.clear();
return result;
}
if (m_mode == ReplaceMode) {
EventResult result = EventUnhandled;
- foreach (const Input &in, g.pendingInput) {
+ foreach (const Input &in, pendingInput) {
EventResult r = handleReplaceMode(in);
if (r == EventHandled)
result = EventHandled;
}
- g.pendingInput.clear();
return result;
}
if (m_mode == CommandMode) {
EventResult result = EventUnhandled;
- foreach (const Input &in, g.pendingInput) {
+ foreach (const Input &in, pendingInput) {
EventResult r = handleCommandMode(in);
if (r == EventHandled)
result = EventHandled;
}
- g.pendingInput.clear();
return result;
}
return EventUnhandled;