]> git.lyx.org Git - features.git/commitdiff
Move the default module loading from makeDocumentClass() to setBaseClass().
authorRichard Heck <rgheck@comcast.net>
Fri, 25 Jul 2008 16:48:48 +0000 (16:48 +0000)
committerRichard Heck <rgheck@comcast.net>
Fri, 25 Jul 2008 16:48:48 +0000 (16:48 +0000)
This makes the Document>Settings dialog behave better.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25882 a592a061-630c-0410-9148-cb99ea01b6c8

src/BufferParams.cpp
src/frontends/qt4/GuiDocument.cpp

index bc818c39ddc42072c9c0e2cd734acc5bb41e1750..2117e8059c006818cbb39c86ea63bdc17261f2fc 100644 (file)
@@ -1428,40 +1428,16 @@ bool BufferParams::setBaseClass(string const & classname)
                bcl.addEmptyClass(classname);
        }
 
-       if (bcl[classname].load()) {
-               pimpl_->baseClass_ = classname;
-               return true;
+       bool const success = bcl[classname].load();
+       if (!success) { 
+               docstring s = 
+                       bformat(_("The document class %1$s could not be loaded."),
+                       from_utf8(classname));
+               frontend::Alert::error(_("Could not load class"), s);
+               return false;
        }
-       
-       docstring s = 
-               bformat(_("The document class %1$s could not be loaded."),
-               from_utf8(classname));
-       frontend::Alert::error(_("Could not load class"), s);
-       return false;
-}
-
-
-LayoutFile const * BufferParams::baseClass() const
-{
-       if (LayoutFileList::get().haveClass(pimpl_->baseClass_))
-               return &(LayoutFileList::get()[pimpl_->baseClass_]);
-       else 
-               return 0;
-}
 
-
-LayoutFileIndex const & BufferParams::baseClassID() const
-{
-       return pimpl_->baseClass_;
-}
-
-
-void BufferParams::makeDocumentClass()
-{
-       if (!baseClass())
-               return;
-
-       doc_class_ = &(DocumentClassBundle::get().newClass(*baseClass()));
+       pimpl_->baseClass_ = classname;
 
        // add any required modules not already in use
        set<string> const & mods = baseClass()->defaultModules();
@@ -1497,7 +1473,32 @@ void BufferParams::makeDocumentClass()
                        }
                }
        }
-       
+       return true;
+}
+
+
+LayoutFile const * BufferParams::baseClass() const
+{
+       if (LayoutFileList::get().haveClass(pimpl_->baseClass_))
+               return &(LayoutFileList::get()[pimpl_->baseClass_]);
+       else 
+               return 0;
+}
+
+
+LayoutFileIndex const & BufferParams::baseClassID() const
+{
+       return pimpl_->baseClass_;
+}
+
+
+void BufferParams::makeDocumentClass()
+{
+       if (!baseClass())
+               return;
+
+       doc_class_ = &(DocumentClassBundle::get().newClass(*baseClass()));
+
        // FIXME It might be worth loading the children's modules here,
        // just as we load their bibliographies and such, instead of just 
        // doing a check in InsetInclude.
index 15b51d3cf49d083d5e01437607338f9160680b0d..c5be6ef4e5fdf3516114001065517c80627f9096 100644 (file)
@@ -1323,6 +1323,11 @@ void GuiDocument::classChanged()
                bp_.useClassDefaults();
                paramsToDialog(bp_);
        }
+       // FIXME There's a little bug here connected with auto_reset, namely,
+       // that, if the preceding is skipped and the user has changed the
+       // modules before changing the class, those changes will be lost on
+       // update. But maybe that's what we want?
+       updateSelectedModules();
 }