[LyX/master] Amend f7e54c0bb21db
Juergen Spitzmueller <[email protected]> Mon, 20 Jul 2026 12:15:45 +0000
| Newsgroups | gmane.editors.lyx.cvs |
|---|---|
| Message-ID | <[email protected]> |
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