commit 2371bfdf1518fe0dff05a0c18ae4250b6392d9db
Author: Juergen Spitzmueller <[email protected]>
Date: Mon Jan 30 08:46:36 2023 +0100
Fix font combos with Qt6 (#12630)
Use CategorizedCombos methods to properly access the model
---
src/frontends/qt/GuiDocument.cpp | 169 +++++++++++++++++++++-----------------
1 files changed, 95 insertions(+), 74 deletions(-)
diff --git a/src/frontends/qt/GuiDocument.cpp b/src/frontends/qt/GuiDocument.cpp
index 287c0e8..60f9f84 100644
--- a/src/frontends/qt/GuiDocument.cpp
+++ b/src/frontends/qt/GuiDocument.cpp
@@ -2450,12 +2450,12 @@ void GuiDocument::osFontsChanged(bool nontexfonts)
{
bool const tex_fonts = !nontexfonts;
// store current fonts
- QString const font_roman = fontModule->fontsRomanCO->itemData(
- fontModule->fontsRomanCO->currentIndex()).toString();
- QString const font_sans = fontModule->fontsSansCO->itemData(
- fontModule->fontsSansCO->currentIndex()).toString();
- QString const font_typewriter = fontModule->fontsTypewriterCO->itemData(
-
fontModule->fontsTypewriterCO->currentIndex()).toString();
+ QString const font_roman = fontModule->fontsRomanCO->getData(
+ fontModule->fontsRomanCO->currentIndex());
+ QString const font_sans = fontModule->fontsSansCO->getData(
+ fontModule->fontsSansCO->currentIndex());
+ QString const font_typewriter = fontModule->fontsTypewriterCO->getData(
+ fontModule->fontsTypewriterCO->currentIndex());
QString const font_math = fontModule->fontsMathCO->itemData(
fontModule->fontsMathCO->currentIndex()).toString();
int const font_sf_scale = fontModule->scaleSansSB->value();
@@ -2474,15 +2474,9 @@ void GuiDocument::osFontsChanged(bool nontexfonts)
outputModule->defaultFormatCO->setCurrentIndex(index);
// try to restore fonts which were selected two toggles ago
- index = fontModule->fontsRomanCO->findData(fontModule->font_roman);
- if (index != -1)
- fontModule->fontsRomanCO->setCurrentIndex(index);
- index = fontModule->fontsSansCO->findData(fontModule->font_sans);
- if (index != -1)
- fontModule->fontsSansCO->setCurrentIndex(index);
- index =
fontModule->fontsTypewriterCO->findData(fontModule->font_typewriter);
- if (index != -1)
- fontModule->fontsTypewriterCO->setCurrentIndex(index);
+ fontModule->fontsRomanCO->set(fontModule->font_roman);
+ fontModule->fontsSansCO->set(fontModule->font_sans);
+ fontModule->fontsTypewriterCO->set(fontModule->font_typewriter);
index = fontModule->fontsMathCO->findData(fontModule->font_math);
if (index != -1)
fontModule->fontsMathCO->setCurrentIndex(index);
@@ -2575,8 +2569,8 @@ void GuiDocument::fontOsfToggled(bool state)
{
if (fontModule->osFontsCB->isChecked())
return;
- QString font = fontModule->fontsRomanCO->itemData(
- fontModule->fontsRomanCO->currentIndex()).toString();
+ QString font = fontModule->fontsRomanCO->getData(
+ fontModule->fontsRomanCO->currentIndex());
if (hasMonolithicExpertSet(font))
fontModule->fontScCB->setChecked(state);
}
@@ -2586,8 +2580,8 @@ void GuiDocument::fontScToggled(bool state)
{
if (fontModule->osFontsCB->isChecked())
return;
- QString font = fontModule->fontsRomanCO->itemData(
- fontModule->fontsRomanCO->currentIndex()).toString();
+ QString font = fontModule->fontsRomanCO->getData(
+ fontModule->fontsRomanCO->currentIndex());
if (hasMonolithicExpertSet(font))
fontModule->fontOsfCB->setChecked(state);
}
@@ -2598,16 +2592,16 @@ void GuiDocument::updateExtraOpts()
bool const tex_fonts = !fontModule->osFontsCB->isChecked();
QString font;
if (tex_fonts)
- font = fontModule->fontsRomanCO->itemData(
-
fontModule->fontsRomanCO->currentIndex()).toString();
+ font = fontModule->fontsRomanCO->getData(
+ fontModule->fontsRomanCO->currentIndex());
bool const rm_opts = providesExtraOpts(font);
if (tex_fonts)
- font = fontModule->fontsSansCO->itemData(
-
fontModule->fontsSansCO->currentIndex()).toString();
+ font = fontModule->fontsSansCO->getData(
+ fontModule->fontsSansCO->currentIndex());
bool const sf_opts = providesExtraOpts(font);
if (tex_fonts)
- font = fontModule->fontsTypewriterCO->itemData(
-
fontModule->fontsTypewriterCO->currentIndex()).toString();
+ font = fontModule->fontsTypewriterCO->getData(
+ fontModule->fontsTypewriterCO->currentIndex());
bool const tt_opts = providesExtraOpts(font);
fontModule->fontspecRomanLA->setEnabled(!tex_fonts || rm_opts);
fontModule->fontspecRomanLE->setEnabled(!tex_fonts || rm_opts);
@@ -2623,22 +2617,22 @@ void GuiDocument::updateFontOptions()
bool const tex_fonts = !fontModule->osFontsCB->isChecked();
QString font;
if (tex_fonts)
- font = fontModule->fontsSansCO->itemData(
-
fontModule->fontsSansCO->currentIndex()).toString();
+ font = fontModule->fontsSansCO->getData(
+ fontModule->fontsSansCO->currentIndex());
bool scalable = providesScale(font);
fontModule->scaleSansSB->setEnabled(scalable);
fontModule->scaleSansLA->setEnabled(scalable);
fontModule->fontSansOsfCB->setEnabled(providesOSF(font));
if (tex_fonts)
- font = fontModule->fontsTypewriterCO->itemData(
-
fontModule->fontsTypewriterCO->currentIndex()).toString();
+ font = fontModule->fontsTypewriterCO->getData(
+ fontModule->fontsTypewriterCO->currentIndex());
scalable = providesScale(font);
fontModule->scaleTypewriterSB->setEnabled(scalable);
fontModule->scaleTypewriterLA->setEnabled(scalable);
fontModule->fontTypewriterOsfCB->setEnabled(providesOSF(font));
if (tex_fonts)
- font = fontModule->fontsRomanCO->itemData(
-
fontModule->fontsRomanCO->currentIndex()).toString();
+ font = fontModule->fontsRomanCO->getData(
+ fontModule->fontsRomanCO->currentIndex());
fontModule->fontScCB->setEnabled(providesSC(font));
fontModule->fontOsfCB->setEnabled(providesOSF(font));
updateExtraOpts();
@@ -2681,10 +2675,10 @@ bool GuiDocument::ot1() const
bool GuiDocument::completeFontset() const
{
- return (fontModule->fontsSansCO->itemData(
- fontModule->fontsSansCO->currentIndex()).toString() ==
"default"
- && fontModule->fontsSansCO->itemData(
-
fontModule->fontsTypewriterCO->currentIndex()).toString() == "default");
+ return (fontModule->fontsSansCO->getData(
+ fontModule->fontsSansCO->currentIndex()) == "default"
+ && fontModule->fontsSansCO->getData(
+ fontModule->fontsTypewriterCO->currentIndex()) ==
"default");
}
@@ -2736,9 +2730,15 @@ void GuiDocument::updateFontlist()
// With fontspec (XeTeX, LuaTeX), we have access to all system fonts,
but not the LaTeX fonts
if (fontModule->osFontsCB->isChecked()) {
- fontModule->fontsRomanCO->addItem(qt_("Default"),
QString("default"));
- fontModule->fontsSansCO->addItem(qt_("Default"),
QString("default"));
- fontModule->fontsTypewriterCO->addItem(qt_("Default"),
QString("default"));
+ fontModule->fontsRomanCO->addItemSort(QString("default"),
qt_("Default"),
+ QString(), qt_("Default
font (as set by class)"),
+ false, false, false,
true, true);
+ fontModule->fontsSansCO->addItemSort(QString("default"),
qt_("Default"),
+ QString(), qt_("Default
font (as set by class)"),
+ false, false, false, true,
true);
+ fontModule->fontsTypewriterCO->addItemSort(QString("default"),
qt_("Default"),
+ QString(),
qt_("Default font (as set by class)"),
+ false, false, false,
true, true);
QString unimath = qt_("Non-TeX Fonts Default");
if (!LaTeXFeatures::isAvailable("unicode-math"))
unimath += qt_(" (not available)");
@@ -2752,9 +2752,15 @@ void GuiDocument::updateFontlist()
const QStringList families(fontdb.families());
#endif
for (auto const & family : families) {
- fontModule->fontsRomanCO->addItem(family, family);
- fontModule->fontsSansCO->addItem(family, family);
- fontModule->fontsTypewriterCO->addItem(family, family);
+ fontModule->fontsRomanCO->addItemSort(family, family,
+ QString(),
QString(),
+ false, false,
false, true, true);
+ fontModule->fontsSansCO->addItemSort(family, family,
+ QString(),
QString(),
+ false, false,
false, true, true);
+ fontModule->fontsTypewriterCO->addItemSort(family,
family,
+ QString(),
QString(),
+ false,
false, false, true, true);
}
return;
}
@@ -2762,24 +2768,36 @@ void GuiDocument::updateFontlist()
if (rmfonts_.empty())
updateTexFonts();
- fontModule->fontsRomanCO->addItem(qt_("Default"), QString("default"));
+ fontModule->fontsRomanCO->addItemSort(QString("default"),
qt_("Default"),
+ QString(), qt_("Default font (as
set by class)"),
+ false, false, false, true, true);
QMap<QString, QString>::const_iterator rmi = rmfonts_.constBegin();
while (rmi != rmfonts_.constEnd()) {
- fontModule->fontsRomanCO->addItem(rmi.key(), rmi.value());
+ fontModule->fontsRomanCO->addItemSort(rmi.value(), rmi.key(),
+ QString(), QString(),
+ false, false, false,
true, true);
++rmi;
}
- fontModule->fontsSansCO->addItem(qt_("Default"), QString("default"));
+ fontModule->fontsSansCO->addItemSort(QString("default"), qt_("Default"),
+ QString(), qt_("Default font (as
set by class)"),
+ false, false, false, true, true);
QMap<QString, QString>::const_iterator sfi = sffonts_.constBegin();
while (sfi != sffonts_.constEnd()) {
- fontModule->fontsSansCO->addItem(sfi.key(), sfi.value());
+ fontModule->fontsSansCO->addItemSort(sfi.value(), sfi.key(),
+ QString(), QString(),
+ false, false, false, true,
true);
++sfi;
}
- fontModule->fontsTypewriterCO->addItem(qt_("Default"),
QString("default"));
+ fontModule->fontsTypewriterCO->addItemSort(QString("default"),
qt_("Default"),
+ QString(), qt_("Default font
(as set by class)"),
+ false, false, false, true,
true);
QMap<QString, QString>::const_iterator tti = ttfonts_.constBegin();
while (tti != ttfonts_.constEnd()) {
- fontModule->fontsTypewriterCO->addItem(tti.key(), tti.value());
+ fontModule->fontsTypewriterCO->addItemSort(tti.value(),
tti.key(),
+ QString(), QString(),
+ false, false, false,
true, true);
++tti;
}
@@ -2825,8 +2843,7 @@ void GuiDocument::romanChanged(int item)
{
if (fontModule->osFontsCB->isChecked())
return;
- QString const font =
- fontModule->fontsRomanCO->itemData(item).toString();
+ QString const font = fontModule->fontsRomanCO->getData(item);
fontModule->fontScCB->setEnabled(providesSC(font));
fontModule->fontOsfCB->setEnabled(providesOSF(font));
updateExtraOpts();
@@ -2838,8 +2855,7 @@ void GuiDocument::sansChanged(int item)
{
if (fontModule->osFontsCB->isChecked())
return;
- QString const font =
- fontModule->fontsSansCO->itemData(item).toString();
+ QString const font = fontModule->fontsSansCO->getData(item);
bool const scalable = providesScale(font);
fontModule->scaleSansSB->setEnabled(scalable);
fontModule->scaleSansLA->setEnabled(scalable);
@@ -2852,8 +2868,7 @@ void GuiDocument::ttChanged(int item)
{
if (fontModule->osFontsCB->isChecked())
return;
- QString const font =
- fontModule->fontsTypewriterCO->itemData(item).toString();
+ QString const font = fontModule->fontsTypewriterCO->getData(item);
bool scalable = providesScale(font);
fontModule->scaleTypewriterSB->setEnabled(scalable);
fontModule->scaleTypewriterLA->setEnabled(scalable);
@@ -3867,19 +3882,19 @@ void GuiDocument::applyView()
// fonts
bp_.fonts_roman[nontexfonts] =
fromqstr(fontModule->fontsRomanCO->
-
itemData(fontModule->fontsRomanCO->currentIndex()).toString());
+ getData(fontModule->fontsRomanCO->currentIndex()));
bp_.fonts_roman[!nontexfonts] = fromqstr(fontModule->font_roman);
bp_.font_roman_opts = fromqstr(fontModule->fontspecRomanLE->text());
bp_.fonts_sans[nontexfonts] =
fromqstr(fontModule->fontsSansCO->
-
itemData(fontModule->fontsSansCO->currentIndex()).toString());
+ getData(fontModule->fontsSansCO->currentIndex()));
bp_.fonts_sans[!nontexfonts] = fromqstr(fontModule->font_sans);
bp_.font_sans_opts = fromqstr(fontModule->fontspecSansLE->text());
bp_.fonts_typewriter[nontexfonts] =
fromqstr(fontModule->fontsTypewriterCO->
-
itemData(fontModule->fontsTypewriterCO->currentIndex()).toString());
+ getData(fontModule->fontsTypewriterCO->currentIndex()));
bp_.fonts_typewriter[!nontexfonts] =
fromqstr(fontModule->font_typewriter);
bp_.font_typewriter_opts =
fromqstr(fontModule->fontspecTypewriterLE->text());
@@ -4384,30 +4399,36 @@ void GuiDocument::paramsToDialog()
bp_.fontsize);
QString font = toqstr(bp_.fontsRoman());
- int rpos = fontModule->fontsRomanCO->findData(font);
- if (rpos == -1) {
- rpos = fontModule->fontsRomanCO->count();
- fontModule->fontsRomanCO->addItem(font + qt_(" (not
installed)"), font);
+ bool foundfont = fontModule->fontsRomanCO->set(font);
+ if (!foundfont) {
+ fontModule->fontsRomanCO->addItemSort(font, font + qt_(" (not
installed)"),
+ qt_("Uninstalled used
fonts"),
+ qt_("This font is not
installed and won't be used in output"),
+ false, false, false,
true);
+ fontModule->fontsRomanCO->set(font);
}
- fontModule->fontsRomanCO->setCurrentIndex(rpos);
fontModule->font_roman = toqstr(bp_.fonts_roman[!bp_.useNonTeXFonts]);
font = toqstr(bp_.fontsSans());
- int spos = fontModule->fontsSansCO->findData(font);
- if (spos == -1) {
- spos = fontModule->fontsSansCO->count();
- fontModule->fontsSansCO->addItem(font + qt_(" (not
installed)"), font);
+ foundfont = fontModule->fontsSansCO->set(font);
+ if (!foundfont ) {
+ fontModule->fontsSansCO->addItemSort(font, font + qt_(" (not
installed)"),
+ qt_("Uninstalled used
fonts"),
+ qt_("This font is not
installed and won't be used in output"),
+ false, false, false, true);
+ fontModule->fontsSansCO->set(font);
}
- fontModule->fontsSansCO->setCurrentIndex(spos);
fontModule->font_sans = toqstr(bp_.fonts_sans[!bp_.useNonTeXFonts]);
font = toqstr(bp_.fontsTypewriter());
- int tpos = fontModule->fontsTypewriterCO->findData(font);
- if (tpos == -1) {
- tpos = fontModule->fontsTypewriterCO->count();
- fontModule->fontsTypewriterCO->addItem(font + qt_(" (not
installed)"), font);
+ foundfont = fontModule->fontsTypewriterCO->set(font);
+ if (!foundfont) {
+ fontModule->fontsTypewriterCO->addItemSort(font, font + qt_("
(not installed)"),
+ qt_("Uninstalled
used fonts"),
+ qt_("This font is
not installed and won't be used in output"),
+ false, false, false,
true);
+ fontModule->fontsTypewriterCO->set(font);
}
- fontModule->fontsTypewriterCO->setCurrentIndex(tpos);
fontModule->font_typewriter =
toqstr(bp_.fonts_typewriter[!bp_.useNonTeXFonts]);
font = toqstr(bp_.fontsMath());
@@ -4427,9 +4448,9 @@ void GuiDocument::paramsToDialog()
fontModule->fontencLA->setEnabled(true);
fontModule->fontencCO->setEnabled(true);
fontModule->fontencLE->setEnabled(true);
- romanChanged(rpos);
- sansChanged(spos);
- ttChanged(tpos);
+ romanChanged(fontModule->fontsRomanCO->currentIndex());
+ sansChanged(fontModule->fontsSansCO->currentIndex());
+ ttChanged(fontModule->fontsTypewriterCO->currentIndex());
}
if (!bp_.fonts_cjk.empty())
--
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs