commit 34c59f426228bb593df9412aabeb83cc7ad14de0
Author: Juergen Spitzmueller <[email protected]>
Date: Mon Jul 20 14:15:00 2026 +0200
Amend f7e54c0bb21db
Fix the real problem. Kudos to Pavel and his new spouse.
---
src/frontends/qt/GuiDocument.cpp | 78 ++++++++++++++++++++--------------------
1 file changed, 38 insertions(+), 40 deletions(-)
diff --git a/src/frontends/qt/GuiDocument.cpp b/src/frontends/qt/GuiDocument.cpp
index ae14c02a18..57994ae855 100644
--- a/src/frontends/qt/GuiDocument.cpp
+++ b/src/frontends/qt/GuiDocument.cpp
@@ -2988,14 +2988,18 @@ void GuiDocument::addSpecialFont()
}
}
} else {
- QTreeWidgetItem * item = is_script ? new
QTreeWidgetItem(fontSpecialModule->scriptFontsTW)
- : new
QTreeWidgetItem(fontSpecialModule->langFontsTW);
+ QTreeWidgetItem * item = nullptr;
for (auto const & iit : items) {
if (iit->data(1, Qt::UserRole).toString() == "rm") {
item = iit;
break;
}
}
+ bool const newitem = !item;
+ if (newitem)
+ // no parent: not inserted yet
+ item = new QTreeWidgetItem;
+
item->setText(0,
fontSpecialModule->specialFontScopeCO->currentText());
item->setData(0, Qt::UserRole, scope);
item->setText(1, qt_("Roman"));
@@ -3008,10 +3012,12 @@ void GuiDocument::addSpecialFont()
else
item->setCheckState(4, Qt::Unchecked);
item->setText(5, rmopts);
- if (is_script)
- specialScriptFontItems.append(item);
- else
- specialLangFontItems.append(item);
+ if (newitem) {
+ if (is_script)
+ specialScriptFontItems.append(item);
+ else
+ specialLangFontItems.append(item);
+ }
}
if (sffont == "default") {
for (auto const & iit : items) {
@@ -3026,15 +3032,18 @@ void GuiDocument::addSpecialFont()
}
}
} else {
- QTreeWidgetItem * item = is_script ? new
QTreeWidgetItem(fontSpecialModule->scriptFontsTW)
- : new
QTreeWidgetItem(fontSpecialModule->langFontsTW);
-
+ QTreeWidgetItem * item = nullptr;
for (auto const & iit : items) {
if (iit->data(1, Qt::UserRole).toString() == "sf") {
item = iit;
break;
}
}
+ bool const newitem = !item;
+ if (newitem)
+ // no parent: not inserted yet
+ item = new QTreeWidgetItem;
+
item->setText(0,
fontSpecialModule->specialFontScopeCO->currentText());
item->setData(0, Qt::UserRole, scope);
item->setText(1, qt_("Sans Serif"));
@@ -3049,10 +3058,13 @@ void GuiDocument::addSpecialFont()
else
item->setCheckState(4, Qt::Unchecked);
item->setText(5, sfopts);
- if (is_script)
- specialScriptFontItems.append(item);
- else
- specialLangFontItems.append(item);
+
+ if (newitem) {
+ if (is_script)
+ specialScriptFontItems.append(item);
+ else
+ specialLangFontItems.append(item);
+ }
}
if (ttfont == "default") {
for (auto const & iit : items) {
@@ -3067,14 +3079,18 @@ void GuiDocument::addSpecialFont()
}
}
} else {
- QTreeWidgetItem * item = is_script ? new
QTreeWidgetItem(fontSpecialModule->scriptFontsTW)
- : new
QTreeWidgetItem(fontSpecialModule->langFontsTW);
+ QTreeWidgetItem * item = nullptr;
for (auto const & iit : items) {
if (iit->data(1, Qt::UserRole).toString() == "tt") {
item = iit;
break;
}
}
+ bool const newitem = !item;
+ if (newitem)
+ // no parent: not inserted yet
+ item = new QTreeWidgetItem;
+
item->setText(0,
fontSpecialModule->specialFontScopeCO->currentText());
item->setData(0, Qt::UserRole, scope);
item->setText(1, qt_("Typewriter"));
@@ -3089,35 +3105,17 @@ void GuiDocument::addSpecialFont()
else
item->setCheckState(4, Qt::Unchecked);
item->setText(5, ttopts);
- if (is_script)
- specialScriptFontItems.append(item);
- else
- specialLangFontItems.append(item);
+
+ if (newitem) {
+ if (is_script)
+ specialScriptFontItems.append(item);
+ else
+ specialLangFontItems.append(item);
+ }
}
fontSpecialModule->langFontsTW->addTopLevelItems(specialLangFontItems);
fontSpecialModule->scriptFontsTW->addTopLevelItems(specialScriptFontItems);
- // Post cleanup; for some reason, empty rows might end up in
- // the widget.
- // FIXME: find cause.
- QTreeWidgetItemIterator twi(fontSpecialModule->langFontsTW);
- while (*twi) {
- if ((*twi)->text(0).isEmpty()) {
- QTreeWidgetItem *item = *twi;
- fontSpecialModule->langFontsTW->takeTopLevelItem(
-
fontSpecialModule->langFontsTW->indexOfTopLevelItem(item));
- }
- ++twi;
- }
- twi = QTreeWidgetItemIterator(fontSpecialModule->scriptFontsTW);
- while (*twi) {
- if ((*twi)->text(0).isEmpty()) {
- QTreeWidgetItem *item = *twi;
- fontSpecialModule->scriptFontsTW->takeTopLevelItem(
-
fontSpecialModule->scriptFontsTW->indexOfTopLevelItem(item));
- }
- ++twi;
- }
change_adaptor();
}
--
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs