diff --git a/src/BufferView.cpp b/src/BufferView.cpp index dafcc9d194..27176b350a 100644 --- a/src/BufferView.cpp +++ b/src/BufferView.cpp @@ -65,6 +65,7 @@ #include "insets/InsetText.h" #include "mathed/MathData.h" +#include "mathed/InsetMathNest.h" #include "frontends/alert.h" #include "frontends/Application.h" @@ -1907,6 +1908,33 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr) } + case LFUN_UNICODE_INSERT: { + if (cmd.argument().empty()) + break; + + FuncCode code = cur.inset().currentMode() == Inset::MATH_MODE ? + LFUN_MATH_INSERT : LFUN_SELF_INSERT; + int i = 0; + while (true) { + docstring const arg = from_utf8(cmd.getArg(i)); + if (arg.empty()) + break; + if (!isHex(arg)) { + LYXERR0("Not a hexstring: " << arg); + ++i; + continue; + } + char_type c = hexToInt(arg); + if (c >= 32 && c < 0x10ffff) { + LYXERR(Debug::KEY, "Inserting c: " << c); + lyx::dispatch(FuncRequest(code, docstring(1, c))); + } + ++i; + } + break; + } + + // This would be in Buffer class if only Cursor did not // require a bufferview case LFUN_INSET_FORALL: { diff --git a/src/Text3.cpp b/src/Text3.cpp index 833a7ed645..e3e436bac5 100644 --- a/src/Text3.cpp +++ b/src/Text3.cpp @@ -1696,29 +1696,6 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd) bv->buffer().errors("Paste"); break; - case LFUN_UNICODE_INSERT: { - if (cmd.argument().empty()) - break; - int i = 0; - while (true) { - docstring const arg = from_utf8(cmd.getArg(i)); - if (arg.empty()) - break; - if (!isHex(arg)) { - LYXERR0("Not a hexstring: " << arg); - ++i; - continue; - } - char_type c = hexToInt(arg); - if (c >= 32 && c < 0x10ffff) { - LYXERR(Debug::KEY, "Inserting c: " << c); - lyx::dispatch(FuncRequest(LFUN_SELF_INSERT, docstring(1, c))); - } - ++i; - } - break; - } - case LFUN_QUOTE_INSERT: { cap::replaceSelection(cur); cur.recordUndo(); diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp index 6f415913b1..b026b888f0 100644 --- a/src/mathed/InsetMathNest.cpp +++ b/src/mathed/InsetMathNest.cpp @@ -1246,31 +1246,6 @@ void InsetMathNest::doDispatch(Cursor & cur, FuncRequest & cmd) break; } - case LFUN_UNICODE_INSERT: { - if (cmd.argument().empty()) - break; - int i = 0; - while (true) { - docstring const arg = from_utf8(cmd.getArg(i)); - if (arg.empty()) - break; - if (!isHex(arg)) { - LYXERR0("Not a hexstring: " << arg); - ++i; - continue; - } - char_type c = hexToInt(arg); - if (c >= 32 && c < 0x10ffff) { - LYXERR(Debug::KEY, "Inserting c: " << c); - FuncCode code = currentMode() == MATH_MODE ? - LFUN_MATH_INSERT : LFUN_SELF_INSERT; - lyx::dispatch(FuncRequest(code, docstring(1, c))); - } - ++i; - } - break; - } - case LFUN_DIALOG_SHOW_NEW_INSET: { docstring const & name = cmd.argument(); string data;