[LyX/master] Fix language options glitches

Juergen Spitzmueller spitz at lyx.org
Fri Aug 23 14:47:07 UTC 2024


commit 3c852439a691900aedb352f0f7ce024e561c1960
Author: Juergen Spitzmueller <spitz at 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()));


More information about the lyx-cvs mailing list