From 71693280c395bd4683945e8758808bb45b574cdc Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Tue, 15 Aug 2023 20:21:32 +0200 Subject: [PATCH] Improve usability of quotation mark selection (#12872) --- src/frontends/qt/GuiDocument.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/frontends/qt/GuiDocument.cpp b/src/frontends/qt/GuiDocument.cpp index 309b1d88fd..f9fb19b331 100644 --- a/src/frontends/qt/GuiDocument.cpp +++ b/src/frontends/qt/GuiDocument.cpp @@ -2424,6 +2424,25 @@ void GuiDocument::updateQuoteStyles(bool const set) langModule->quoteStyleCO->addItem( toqstr(quoteparams.getGuiLabel(qs, langdef)), static_cast(qs)); } + // Use document serif font to assure quotation marks are distinguishable + QFont comboFont(toqstr(lyxrc.roman_font_name), + langModule->quoteStyleCO->fontInfo().pointSize() * 1.4, -1, false); + QFontMetrics fm(comboFont); + // calculate width of the widest item in the set font + int qswidth = 0; + for (int i = 0; i < langModule->quoteStyleCO->count(); ++i) { + langModule->quoteStyleCO->setItemData(i, QVariant(comboFont), Qt::FontRole); + QString str = langModule->quoteStyleCO->itemText(i); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)) + qswidth = max(qswidth, fm.horizontalAdvance(str)); +#else + qswidth = max(qswidth, fm.width(str)); +#endif + } + // add scrollbar width and margin to width + qswidth += langModule->quoteStyleCO->style()->pixelMetric(QStyle::PM_ScrollBarExtent); + qswidth += langModule->quoteStyleCO->view()->autoScrollMargin(); + langModule->quoteStyleCO->view()->setMinimumWidth(qswidth); if (set && has_default) // (re)set to the default style langModule->quoteStyleCO->setCurrentIndex(0); -- 2.39.5