On 2023-01-22 13:44, Daniel wrote:
On 2023-01-22 10:25, Evan Langlois wrote:
Is there some way to reconfigure LyX to not have ESC cancel a dialog
or at least ask me first?  I tried to remove the keybinding for esc in
the preferences, but that didn't help.  The issue is that I use vi, so
when editing the preamble my hand just hits the esc key to save out of
habit.  All my changes are then gone without a "Hey you changed stuff!
Are you sure?"

I don't think there is a way. And I am not sure it is a common enough
case to allow for a preference or so.

But it sounds like you would be satisfied with LyX asking whether to
discard changes made to the preamble before cancelling the dialog. I
think that is generally a good idea. After all, it is like editing your
document where we also don't just let the user close the window without
asking.

Daniel

Attached is a simple patch that avoids the dialog being closed when the
Esc key is pressed. The patch presupposes the source code patch to
ticket #12577 (https://www.lyx.org/trac/ticket/12577).

As suggested above, at least additionally, there should also be a
warning when source codes where changed whether the dialog should be
closed. But that is not implemented with this patch.

Daniel
From 80748b0a03441ca6f959d9776eef8a092aef644c Mon Sep 17 00:00:00 2001
From: Daniel Ramoeller <d....@web.de>
Date: Sun, 22 Jan 2023 16:31:53 +0100
Subject: [PATCH 2/2] When editing source code, prevent Escape key

When editing source code, e.g. the local layout or the LaTeX preamble, pressing 
the Esc key leads to the dialog being closed. This is prevented by the patch.
---
 src/frontends/qt/GuiSourceEdit.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/frontends/qt/GuiSourceEdit.cpp 
b/src/frontends/qt/GuiSourceEdit.cpp
index 9b008a5d03..e451688752 100644
--- a/src/frontends/qt/GuiSourceEdit.cpp
+++ b/src/frontends/qt/GuiSourceEdit.cpp
@@ -300,7 +300,9 @@ void GuiSourceEdit::keyPressEvent(QKeyEvent *event)
                modifyMarkerInSel("\t", REMOVE);
        else if (event->key() == Qt::Key_Return)
                newLineWithInheritedIndentation();
-       else
+       else if (event->key() == Qt::Key_Escape) {
+        // Ignore the ESC key so that the dialog isn't closed
+       } else
                // Call base class for other events
                QTextEdit::keyPressEvent(event);
 }
-- 
2.24.3 (Apple Git-128)

-- 
lyx-devel mailing list
lyx-devel@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-devel

Reply via email to