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

Reply via email to