[LyX/master] Some special font UI fixes

Juergen Spitzmueller <[email protected]> Mon, 20 Jul 2026 07:16:02 +0000
Newsgroups gmane.editors.lyx.cvs
Message-ID <[email protected]>
commit 788e6529dbd1fa19564d842e03a096ac0b6fb07c
Author: Juergen Spitzmueller <[email protected]>
Date:   Mon Jul 20 09:15:44 2026 +0200

    Some special font UI fixes
---
 src/frontends/qt/GuiDocument.cpp | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/frontends/qt/GuiDocument.cpp b/src/frontends/qt/GuiDocument.cpp
index fbfb970b36..5ae667cf9e 100644
--- a/src/frontends/qt/GuiDocument.cpp
+++ b/src/frontends/qt/GuiDocument.cpp
@@ -2905,8 +2905,12 @@ void GuiDocument::setSpecialFontButtons()
 		return;
 	}
 	bool changed = false;
+	bool have_rm = false;
+	bool have_sf = false;
+	bool have_tt = false;
 	for (auto const & iit : items) {
 		if (iit->data(1, Qt::UserRole).toString() == "rm") {
+			have_rm = true;
 			if (iit->text(2) != rmfont
 			    || iit->checkState(4) != fontSpecialModule->fontSpecialRomanOsfCB->checkState()
 			    || iit->text(5) != fontSpecialModule->fontspecRomanSpecialLE->text()) {
@@ -2914,6 +2918,7 @@ void GuiDocument::setSpecialFontButtons()
 				break;
 			}
 		} else if (iit->data(1, Qt::UserRole).toString() == "sf") {
+			have_sf = true;
 			if (iit->text(2) != sffont
 			    || iit->text(3).toInt() != fontSpecialModule->scaleSpecialSansSB->value()
 			    || iit->checkState(4) != fontSpecialModule->fontSpecialSansOsfCB->checkState()
@@ -2922,6 +2927,7 @@ void GuiDocument::setSpecialFontButtons()
 				break;
 			}
 		} else if (iit->data(1, Qt::UserRole).toString() == "tt") {
+			have_tt = true;
 			if (iit->text(2) != ttfont
 			    || iit->text(3).toInt() != fontSpecialModule->scaleSpecialTypewriterSB->value()
 			    || iit->checkState(4) != fontSpecialModule->fontSpecialTypewriterOsfCB->checkState()
@@ -2931,6 +2937,9 @@ void GuiDocument::setSpecialFontButtons()
 			}
 		}
 	}
+	if ((!have_rm && rmfont != "default") || (!have_sf && sffont != "default")
+	     || (!have_tt && ttfont != "default"))
+		changed = true;
 	if (changed)
 		fontSpecialModule->applySpecialFontPB->setText(qt_("Mo&dify"));
 	else
@@ -2993,6 +3002,7 @@ void GuiDocument::addSpecialFont()
 		item->setData(1, Qt::UserRole, "rm");
 		item->setText(2, rmfont);
 		// no scale here
+		item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
 		if (rmosf)
 			item->setCheckState(4, Qt::Checked);
 		else
@@ -3032,6 +3042,7 @@ void GuiDocument::addSpecialFont()
 		QString sfscl;
 		sfscl.setNum(sfscale);
 		item->setText(3, sfscl);
+		item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
 		if (sfosf)
 			item->setCheckState(4, Qt::Checked);
 		else
@@ -3071,6 +3082,7 @@ void GuiDocument::addSpecialFont()
 		QString ttscl;
 		ttscl.setNum(ttscale);
 		item->setText(3, ttscl);
+		item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
 		if (ttosf)
 			item->setCheckState(4, Qt::Checked);
 		else
-- 
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs