[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