From 2e0508ca26649b1b1da7d671f90486cbcdd02549 Mon Sep 17 00:00:00 2001
From: hluk <hluk@email.cz>
Date: Tue, 10 Sep 2013 18:39:05 +0200
Subject: [PATCH] FakeVim: Handle deleted editor widget in insert mode

Change-Id: I7e6585872552a9b4a5bd126e7d01a8f9ea18339a
Reviewed-by: hjk <hjk121@nokiamail.com>
---
 src/plugins/fakevim/fakevimhandler.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index 782333cc9f9..9c800a89588 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -4519,6 +4519,9 @@ EventResult FakeVimHandler::Private::handleInsertOrReplaceMode(const Input &inpu
     else
         handleReplaceMode(input);
 
+    if (!m_textedit && !m_plaintextedit)
+        return EventHandled;
+
     if (!isInsertMode() || m_breakEditBlock
             || position() < m_insertState.pos1 || position() > m_insertState.pos2) {
         commitInsertState();
@@ -6969,7 +6972,7 @@ bool FakeVimHandler::Private::handleInsertInEditor(const Input &input)
                     static_cast<Qt::KeyboardModifiers>(input.modifiers()), input.text());
     setAnchor();
     if (!passEventToEditor(event))
-        return false;
+        return !m_textedit && !m_plaintextedit; // Mark event as handled if it has destroyed editor.
 
     endEditBlock();
 
@@ -6985,6 +6988,8 @@ bool FakeVimHandler::Private::passEventToEditor(QEvent &event)
     EDITOR(setOverwriteMode(false));
     emit q->requestSetBlockSelection(false);
     bool accepted = QApplication::sendEvent(editor(), &event);
+    if (!m_textedit && !m_plaintextedit)
+        return false;
     if (isVisualBlockMode())
         emit q->requestSetBlockSelection(true);
     updateCursorShape();
-- 
GitLab