diff options
author | hjk <qtc-committer@nokia.com> | 2012-04-11 14:11:07 +0200 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2012-04-17 11:20:37 +0200 |
commit | b79f13df6abb2c98c5acc312981e02ed04a138bb (patch) | |
tree | d57b49fe0ec614ec0cd082d229fea29c1c48ba7e /src/plugins/fakevim | |
parent | 87fcf7ebea7eb7fb5c1f91d89d2bacde234f5f98 (diff) | |
download | qt-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.cpp | 13 |
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; |