commit f599e90d92a872e2eaa60b97a3754fcb9e887eff
Author: Jean-Marc Lasgouttes <[email protected]>
Date: Tue Feb 20 12:09:10 2018 +0100
Kill macro mode when using LFUN_ESCAPE
Add a `cancel' boolean to macroModeClose() that just removes all trace
of what has been entered instead of finalizing it.
When entering a macro in mathed, let LFUN_ESCAPE invoke
macroModeClose(true). The new semantics of LFUN_ESCAPE in mathed is
thus to abort the input of a macro name.
Fixes bug #9251.
(cherry picked from commit 9296344b9a26191a2092d175a51e357ecc35145d)
---
src/Cursor.cpp | 4 ++--
src/Cursor.h | 6 +++---
src/mathed/InsetMathNest.cpp | 8 ++++++--
status.23x | 3 +++
4 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/src/Cursor.cpp b/src/Cursor.cpp
index 2e80605..984eb09 100644
--- a/src/Cursor.cpp
+++ b/src/Cursor.cpp
@@ -1413,7 +1413,7 @@ bool Cursor::down()
}
-bool Cursor::macroModeClose()
+bool Cursor::macroModeClose(bool cancel)
{
if (!inMacroMode())
return false;
@@ -1426,7 +1426,7 @@ bool Cursor::macroModeClose()
cell().erase(pos());
// do nothing if the macro name is empty
- if (s == "\\")
+ if (s == "\\" || cancel)
return false;
// trigger updates of macros, at least, if no full
diff --git a/src/Cursor.h b/src/Cursor.h
index 8a8c719..1e66778 100644
--- a/src/Cursor.h
+++ b/src/Cursor.h
@@ -502,9 +502,9 @@ public:
void setScreenPos(int x, int y);
/// current offset in the top cell
- /// interpret name a name of a macro. Returns true if
- /// something got inserted.
- bool macroModeClose();
+ /// interpret name of a macro or ditch it if \c cancel is true.
+ /// Returns true if something got inserted.
+ bool macroModeClose(bool cancel = false);
/// are we currently typing the name of a macro?
bool inMacroMode() const;
/// get access to the macro we are currently typing
diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp
index f9c8813..af50a7e 100644
--- a/src/mathed/InsetMathNest.cpp
+++ b/src/mathed/InsetMathNest.cpp
@@ -836,8 +836,12 @@ void InsetMathNest::doDispatch(Cursor & cur, FuncRequest &
cmd)
if (cur.selection())
cur.clearSelection();
else {
- cmd = FuncRequest(LFUN_FINISHED_FORWARD);
- cur.undispatched();
+ if (cur.inMacroMode())
+ cur.macroModeClose(true);
+ else {
+ cmd = FuncRequest(LFUN_FINISHED_FORWARD);
+ cur.undispatched();
+ }
}
break;
diff --git a/status.23x b/status.23x
index 74dc00f..42bc947 100644
--- a/status.23x
+++ b/status.23x
@@ -57,6 +57,9 @@ What's new
- Fix ChkTeX on Windows (requires ChkTeX 1.7.7 at least) (bug 9989).
+- When entering a math macro name, Escape properly cancels the
+ operation (bug 9251).
+
* INTERNALS