commit 3c852439a691900aedb352f0f7ce024e561c1960
Author: Juergen Spitzmueller <sp...@lyx.org>
Date:   Fri Aug 23 16:45:52 2024 +0200

    Fix language options glitches
---
 src/BufferParams.cpp             |  9 ++++++---
 src/LaTeXFeatures.cpp            |  5 ++++-
 src/frontends/qt/GuiDocument.cpp | 10 +++++++++-
 3 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index c26a808cd5..78223fa0a7 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -3498,10 +3498,13 @@ string BufferParams::babelCall(LaTeXFeatures const & 
features, string lang_opts,
        // get language options with modifiers
        bool have_mods = false;
        vector<string> blangs;
-       for (auto const & l : features.getLanguages()) {
-               if (l->babel().empty())
-                       continue;
+       std::set<Language const *> langs = features.getLanguages();
+       // add main language
+       langs.insert(language);
+       for (auto const & l : langs) {
                string blang = l->babel();
+               if (blang.empty())
+                       continue;
                if (l->babelOptFormat() == "modifier") {
                        vector<string> opts = 
getVectorFromString(babelLangOptions(l->lang()));
                        bool have_one = false;
diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp
index 2e1ed4328d..3737938338 100644
--- a/src/LaTeXFeatures.cpp
+++ b/src/LaTeXFeatures.cpp
@@ -1816,7 +1816,10 @@ docstring const LaTeXFeatures::getBabelPostsettings() 
const
 {
        odocstringstream tmp;
 
-       for (auto const & lang : UsedLanguages_) {
+       std::set<Language const *> langs = UsedLanguages_;
+       // add main language
+       langs.insert(bufferParams().language);
+       for (auto const & lang : langs) {
                if (!lang->babel_postsettings().empty())
                        tmp << lang->babel_postsettings() << '\n';
                if (lang->babelOptFormat() != "modifier") {
diff --git a/src/frontends/qt/GuiDocument.cpp b/src/frontends/qt/GuiDocument.cpp
index 151d0a5913..acdf9c2999 100644
--- a/src/frontends/qt/GuiDocument.cpp
+++ b/src/frontends/qt/GuiDocument.cpp
@@ -2564,6 +2564,8 @@ void GuiDocument::languageChanged(int i)
 
        // set appropriate quotation mark style
        updateQuoteStyles(true);
+
+       updateLanguageOptions();
 }
 
 
@@ -2860,7 +2862,13 @@ void GuiDocument::updateLanguageOptions()
        bool const use_polyglossia = extern_polyglossia
                        || (langpack != "babel" && !extern_babel
                            && fontModule->osFontsCB->isChecked());
-       for (auto const & l : buffer().getLanguages()) {
+       std::set<Language const *> langs = buffer().getLanguages();
+       // We might have a non-yet applied document language
+       QString const langname = langModule->languageCO->itemData(
+               langModule->languageCO->currentIndex()).toString();
+       Language const * newlang = 
lyx::languages.getLanguage(fromqstr(langname));
+       langs.insert(newlang);
+       for (auto const & l : langs) {
                QTreeWidgetItem * twi = new QTreeWidgetItem();
                twi->setData(0, Qt::DisplayRole, qt_(l->display()));
                twi->setData(0, Qt::UserRole, toqstr(l->lang()));
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to