commit 535309929bdf029e678077ee6bfbe97fa13f6358
Author: Enrico Forestieri <[email protected]>
Date: Fri Nov 16 21:47:24 2018 +0100
Fix reloading of local layout file (bug #11120)
(cherry picked from commit 7822d11361b270ea0e96c02a0e43e0bdd7cee07d)
---
src/BufferParams.cpp | 4 ++--
src/BufferParams.h | 4 +++-
src/BufferView.cpp | 4 ++--
src/frontends/qt4/GuiDocument.cpp | 8 ++++----
status.23x | 1 +
5 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index a2ff315..fc436e1 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -2453,7 +2453,7 @@ void BufferParams::setDocumentClass(DocumentClassConstPtr
tc)
}
-bool BufferParams::setBaseClass(string const & classname)
+bool BufferParams::setBaseClass(string const & classname, string const & path)
{
LYXERR(Debug::TCLASS, "setBaseClass: " << classname);
LayoutFileList & bcl = LayoutFileList::get();
@@ -2469,7 +2469,7 @@ bool BufferParams::setBaseClass(string const & classname)
bcl.addEmptyClass(classname);
}
- bool const success = bcl[classname].load();
+ bool const success = bcl[classname].load(path);
if (!success) {
docstring s =
bformat(_("Due to some error in it, the layout file:\n"
diff --git a/src/BufferParams.h b/src/BufferParams.h
index bc5c10d..9236d5b 100644
--- a/src/BufferParams.h
+++ b/src/BufferParams.h
@@ -136,7 +136,9 @@ public:
/// NOTE: This does not call makeDocumentClass() to update the local
/// DocumentClass. That needs to be done manually.
/// \param classname: the name of the layout file
- bool setBaseClass(std::string const & classname);
+ /// \param path: non-empty only for local layout files
+ bool setBaseClass(std::string const & classname,
+ std::string const & path = std::string());
/// Adds the module information to the baseClass information to
/// create our local DocumentClass.
/// NOTE: This should NEVER be called externally unless one immediately
goes
diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 637c5b0..ac5c318 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -1350,7 +1350,7 @@ void BufferView::dispatch(FuncRequest const & cmd,
DispatchResult & dr)
// without calling recordUndo. Fix this before using
// recordUndoBufferParams().
cur.recordUndoFullBuffer();
- buffer_.params().setBaseClass(argument);
+ buffer_.params().setBaseClass(argument, buffer_.layoutPos());
makeDocumentClass();
dr.screenUpdate(Update::Force);
dr.forceBufferUpdate();
@@ -1374,7 +1374,7 @@ void BufferView::dispatch(FuncRequest const & cmd,
DispatchResult & dr)
case LFUN_LAYOUT_RELOAD: {
LayoutFileIndex bc = buffer_.params().baseClassID();
LayoutFileList::get().reset(bc);
- buffer_.params().setBaseClass(bc);
+ buffer_.params().setBaseClass(bc, buffer_.layoutPos());
makeDocumentClass();
dr.screenUpdate(Update::Force);
dr.forceBufferUpdate();
diff --git a/src/frontends/qt4/GuiDocument.cpp
b/src/frontends/qt4/GuiDocument.cpp
index ccdcde7..645d12a 100644
--- a/src/frontends/qt4/GuiDocument.cpp
+++ b/src/frontends/qt4/GuiDocument.cpp
@@ -2467,7 +2467,7 @@ void GuiDocument::classChanged()
// according to the new class. Note, however, that, if you use
// the scroll wheel when sitting on the combo box, we'll load a
// lot of TextClass objects very quickly....
- if (!bp_.setBaseClass(classname)) {
+ if (!bp_.setBaseClass(classname, buffer().layoutPos())) {
Alert::error(_("Error"), _("Unable to set document class."));
return;
}
@@ -2886,7 +2886,7 @@ void GuiDocument::updateDefaultFormat()
int const idx = latexModule->classCO->currentIndex();
if (idx >= 0) {
string const classname =
fromqstr(latexModule->classCO->getData(idx));
- param_copy.setBaseClass(classname);
+ param_copy.setBaseClass(classname, buffer().layoutPos());
param_copy.makeDocumentClass(true);
}
outputModule->defaultFormatCO->blockSignals(true);
@@ -3044,7 +3044,7 @@ void GuiDocument::applyView()
int idx = latexModule->classCO->currentIndex();
if (idx >= 0) {
string const classname =
fromqstr(latexModule->classCO->getData(idx));
- bp_.setBaseClass(classname);
+ bp_.setBaseClass(classname, buffer().layoutPos());
}
// Modules
@@ -4238,7 +4238,7 @@ void GuiDocument::useClassDefaults()
int idx = latexModule->classCO->currentIndex();
string const classname = fromqstr(latexModule->classCO->getData(idx));
- if (!bp_.setBaseClass(classname)) {
+ if (!bp_.setBaseClass(classname, buffer().layoutPos())) {
Alert::error(_("Error"), _("Unable to set document class."));
return;
}
diff --git a/status.23x b/status.23x
index 3690294..19a5d54 100644
--- a/status.23x
+++ b/status.23x
@@ -47,6 +47,7 @@ What's new
* USER INTERFACE
+- Fix reloading of local layout file (bug 11120).
* INTERNALS