From: Juergen Spitzmueller Date: Fri, 23 Aug 2024 14:45:52 +0000 (+0200) Subject: Fix language options glitches X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=3c852439a691900aedb352f0f7ce024e561c1960;p=lyx.git Fix language options glitches --- 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 blangs; - for (auto const & l : features.getLanguages()) { - if (l->babel().empty()) - continue; + std::set 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 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 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 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()));