commit 07baa698752d17a382ad22494a975d48eb50f41e
Author: Juergen Spitzmueller <[email protected]>
Date: Mon Feb 10 08:40:35 2014 +0100
Do not issue module warnings when just cloning a buffer (#8864)
diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index c902db7..7f5ebcb 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -515,7 +515,7 @@ void Buffer::cloneWithChildren(BufferMap & bufmap,
CloneList * clones) const
// The clone needs its own DocumentClass, since running updateBuffer()
will
// modify it, and we would otherwise be sharing it with the original
Buffer.
- buffer_clone->params().makeDocumentClass();
+ buffer_clone->params().makeDocumentClass(true);
ErrorList el;
cap::switchBetweenClasses(
params().documentClassPtr(),
buffer_clone->params().documentClassPtr(),
@@ -563,7 +563,7 @@ Buffer * Buffer::cloneBufferOnly() const {
// The clone needs its own DocumentClass, since running updateBuffer()
will
// modify it, and we would otherwise be sharing it with the original
Buffer.
- buffer_clone->params().makeDocumentClass();
+ buffer_clone->params().makeDocumentClass(true);
ErrorList el;
cap::switchBetweenClasses(
params().documentClassPtr(),
buffer_clone->params().documentClassPtr(),
diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index 4aaf545..8c61d5a 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -2044,12 +2044,12 @@ LayoutFileIndex const & BufferParams::baseClassID()
const
}
-void BufferParams::makeDocumentClass()
+void BufferParams::makeDocumentClass(bool const clone)
{
if (!baseClass())
return;
- doc_class_ =
&(DocumentClassBundle::get().makeDocumentClass(*baseClass(), layout_modules_));
+ doc_class_ =
&(DocumentClassBundle::get().makeDocumentClass(*baseClass(), layout_modules_,
clone));
if (!local_layout.empty()) {
if (!doc_class_->read(local_layout, TextClass::MODULE)) {
diff --git a/src/BufferParams.h b/src/BufferParams.h
index bb29f01..0c44b7f 100644
--- a/src/BufferParams.h
+++ b/src/BufferParams.h
@@ -123,7 +123,7 @@ public:
bool setBaseClass(std::string const & classname);
/// Adds the module information to the baseClass information to
/// create our local DocumentClass.
- void makeDocumentClass();
+ void makeDocumentClass(bool const clone = false);
/// Returns the DocumentClass currently in use: the BaseClass as
modified
/// by modules.
DocumentClass const & documentClass() const;
diff --git a/src/TextClass.cpp b/src/TextClass.cpp
index a15f8bf..2a933de 100644
--- a/src/TextClass.cpp
+++ b/src/TextClass.cpp
@@ -1313,7 +1313,7 @@ DocumentClassBundle & DocumentClassBundle::get()
DocumentClass & DocumentClassBundle::makeDocumentClass(
- LayoutFile const & baseClass, LayoutModuleList const & modlist)
+ LayoutFile const & baseClass, LayoutModuleList const & modlist,
bool const clone)
{
DocumentClass & doc_class = newClass(baseClass);
LayoutModuleList::const_iterator it = modlist.begin();
@@ -1327,10 +1327,11 @@ DocumentClass & DocumentClassBundle::makeDocumentClass(
"this document but has not been
found in the list of\n"
"available modules. If you
recently installed it, you\n"
"probably need to reconfigure
LyX.\n"), from_utf8(modName));
- frontend::Alert::warning(_("Module not available"),
msg);
+ if (!clone)
+ frontend::Alert::warning(_("Module not
available"), msg);
continue;
}
- if (!lm->isAvailable()) {
+ if (!lm->isAvailable() && !clone) {
docstring const prereqs =
from_utf8(getStringFromVector(lm->prerequisites(), "\n\t"));
docstring const msg =
bformat(_("The module %1$s requires a package
that is not\n"
@@ -1343,7 +1344,7 @@ DocumentClass & DocumentClassBundle::makeDocumentClass(
frontend::Alert::warning(_("Package not available"),
msg, true);
}
FileName layout_file = libFileSearch("layouts",
lm->getFilename());
- if (!doc_class.read(layout_file, TextClass::MODULE)) {
+ if (!doc_class.read(layout_file, TextClass::MODULE) && !clone) {
docstring const msg =
bformat(_("Error reading module
%1$s\n"), from_utf8(modName));
frontend::Alert::warning(_("Read Error"), msg);
diff --git a/src/TextClass.h b/src/TextClass.h
index dc30062..85f1fb4 100644
--- a/src/TextClass.h
+++ b/src/TextClass.h
@@ -467,7 +467,8 @@ public:
/// \return A new DocumentClass based on baseClass, with info added
/// from the modules in modlist.
DocumentClass & makeDocumentClass(LayoutFile const & baseClass,
- LayoutModuleList const & modlist);
+ LayoutModuleList const & modlist,
+ bool const clone = false);
private:
/// control instantiation
DocumentClassBundle() {}
diff --git a/src/frontends/qt4/GuiDocument.cpp
b/src/frontends/qt4/GuiDocument.cpp
index 315c321..a678755 100644
--- a/src/frontends/qt4/GuiDocument.cpp
+++ b/src/frontends/qt4/GuiDocument.cpp
@@ -2151,7 +2151,7 @@ void GuiDocument::updateDefaultFormat()
if (idx >= 0) {
string const classname = classes_model_.getIDString(idx);
param_copy.setBaseClass(classname);
- param_copy.makeDocumentClass();
+ param_copy.makeDocumentClass(true);
}
outputModule->defaultFormatCO->blockSignals(true);
outputModule->defaultFormatCO->clear();
diff --git a/status.20x b/status.20x
index 79e52dc..bdaeb76 100644
--- a/status.20x
+++ b/status.20x
@@ -77,6 +77,8 @@ What's new
- Fix the missing dynamic menus in general and restore correctly from
fullscreen.
+- Prevent recurrent pop-up of "missing module requirements" warning (bug 8864).
+
* DOCUMENTATION AND LOCALIZATION