[LyX/master] Fix problem with edit button.
Richard Kimberly Heck
rikiheck at lyx.org
Mon Aug 31 14:54:05 UTC 2020
commit cf7e32ee8f398f8dc60f2373b8a74b1df08bcd86
Author: Richard Kimberly Heck <rikiheck at lyx.org>
Date: Sat Aug 22 15:21:53 2020 -0400
Fix problem with edit button.
The previous implementation relied upon the cursor being immediately
in front of the inset. A bad idea.
---
src/frontends/qt/GuiInclude.cpp | 27 +++++++++++++++++++++++++--
1 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/src/frontends/qt/GuiInclude.cpp b/src/frontends/qt/GuiInclude.cpp
index 5a38654..f278351 100644
--- a/src/frontends/qt/GuiInclude.cpp
+++ b/src/frontends/qt/GuiInclude.cpp
@@ -15,12 +15,12 @@
#include "GuiInclude.h"
#include "Buffer.h"
+#include "BufferList.h"
#include "BufferParams.h"
#include "FuncRequest.h"
#include "LyXRC.h"
#include "qt_helpers.h"
-#include "LyXRC.h"
#include "support/gettext.h"
#include "support/lstrings.h"
@@ -28,6 +28,8 @@
#include "support/FileName.h"
#include "support/filetools.h"
+#include "frontends/alert.h"
+
#include "insets/InsetListingsParams.h"
#include "insets/InsetInclude.h"
@@ -291,7 +293,28 @@ void GuiInclude::edit()
applyView();
} else
hideView();
- dispatch(FuncRequest(LFUN_INSET_EDIT));
+ QString const fname = filenameED->text();
+ string const bpath = buffer().filePath();
+ string const absfname = support::makeAbsPath(fromqstr(fname), bpath).absFileName();
+ FileName const absFileName(absfname);
+ Buffer const * buffer = theBufferList().getBuffer(absFileName);
+ if (!buffer) {
+ // The Buffer is not already open, so try to open it.
+ if (!absFileName.exists()) {
+ Alert::warning(_("File does not exist"),
+ bformat(_("The requested file\n\t%1$s\ndoes not exist."),
+ from_utf8(absfname)));
+ return;
+ }
+ dispatch(FuncRequest(LFUN_BUFFER_NEW, absfname));
+ // Did we succeed?
+ if (!theBufferList().getBuffer(absFileName)) {
+ // We should already have had an error message.
+ return;
+ }
+ }
+ // Switch to the requested Buffer
+ dispatch(FuncRequest(LFUN_BUFFER_SWITCH, absfname));
}
More information about the lyx-cvs
mailing list