mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-05 09:33:25 -08:00
[Fonts] Keep ChatView on the app font and share the report log font
- ChatLog's unset fallback is qApp->font() again: ChatView never set a font before the role existed, so an unset role must not switch chat and the game log to monospace at the system GeneralFont size. - Move the monospace fallback the report dialogs used before into report_utils::reportLogFont(), which returns the theme's ChatLog role when it is set and the old monospace otherwise. tab_report, dlg_my_reports and dlg_report_user now share it, so they cannot drift and they honour a themed size instead of overriding it.
This commit is contained in:
parent
eeb5cfc333
commit
bbf055c483
7 changed files with 39 additions and 41 deletions
|
|
@ -657,17 +657,9 @@ QFont ThemeManager::appFont(AppFont::Role role) const
|
|||
}
|
||||
|
||||
// Role fallbacks preserve the pre-theme defaults when no fonts.toml is
|
||||
// present: chat logs rendered monospace (matching the report dialogs),
|
||||
// card text from a serif basis, everything else from the app font.
|
||||
if (role == AppFont::ChatLog) {
|
||||
QFont monoFont(QStringLiteral("monospace"));
|
||||
monoFont.setStyleHint(QFont::Monospace);
|
||||
const int systemPointSize = QFontDatabase::systemFont(QFontDatabase::GeneralFont).pointSize();
|
||||
if (systemPointSize > 0) {
|
||||
monoFont.setPointSize(systemPointSize);
|
||||
}
|
||||
return monoFont;
|
||||
}
|
||||
// present: card text starts from a serif basis, everything else from the
|
||||
// application font. The report dialogs that used to hardcode monospace ask
|
||||
// for it explicitly (report_utils::reportLogFont).
|
||||
if (role == AppFont::CardText) {
|
||||
return QFont(QStringLiteral("Serif"));
|
||||
}
|
||||
|
|
@ -677,6 +669,11 @@ QFont ThemeManager::appFont(AppFont::Role role) const
|
|||
return qApp->font();
|
||||
}
|
||||
|
||||
bool ThemeManager::hasAppFont(AppFont::Role role) const
|
||||
{
|
||||
return currentFonts.fonts.contains(role);
|
||||
}
|
||||
|
||||
QFont ThemeManager::defaultAppFont(AppFont::Role /*role*/) const
|
||||
{
|
||||
// No per-role scaling and no preview: an unset role resolves to the font
|
||||
|
|
|
|||
|
|
@ -150,10 +150,11 @@ public:
|
|||
// when present, otherwise a palette-accent-derived fallback.
|
||||
QColor appColor(AppColor::Role role) const;
|
||||
/** @brief Resolves an application font role: the theme's stored [Fonts]
|
||||
* value when present, otherwise a per-role fallback (monospace for
|
||||
* ChatLog, serif basis for CardText, the application font for the
|
||||
* remaining roles). */
|
||||
* value when present, otherwise a per-role fallback (serif basis
|
||||
* for CardText, the application font for the remaining roles). */
|
||||
QFont appFont(AppFont::Role role) const;
|
||||
/** @brief Whether the active theme defines this role in fonts.toml. */
|
||||
bool hasAppFont(AppFont::Role role) const;
|
||||
/** @brief Resolves an application font role against the startup font only,
|
||||
* ignoring any previewed config in currentFonts. Editors that show
|
||||
* "what this role resolves to" must use this, because appFont()
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
|
||||
#include <QAbstractItemView>
|
||||
#include <QFont>
|
||||
#include <QFontDatabase>
|
||||
#include <QGroupBox>
|
||||
#include <QHBoxLayout>
|
||||
#include <QHeaderView>
|
||||
|
|
@ -127,14 +126,7 @@ DlgMyReports::DlgMyReports(AbstractClient *_client, QWidget *parent)
|
|||
|
||||
void DlgMyReports::applyChatLogFont()
|
||||
{
|
||||
// Family comes from the ChatLog theme role; size stays caller-side as before.
|
||||
QFont monoFont = themeManager->appFont(AppFont::ChatLog);
|
||||
monoFont.setStyleHint(QFont::Monospace);
|
||||
const int systemPointSize = QFontDatabase::systemFont(QFontDatabase::GeneralFont).pointSize();
|
||||
if (systemPointSize > 0) {
|
||||
monoFont.setPointSize(systemPointSize);
|
||||
}
|
||||
chatLogEdit->setFont(monoFont);
|
||||
chatLogEdit->setFont(report_utils::reportLogFont());
|
||||
}
|
||||
|
||||
void DlgMyReports::refreshList()
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
#include "dlg_report_user.h"
|
||||
|
||||
#include "../interface/theme_manager.h"
|
||||
#include "../utility/report_utils.h"
|
||||
#include "abstract_client.h"
|
||||
#include "libcockatrice/protocol/pb/response.pb.h"
|
||||
|
||||
#include <QComboBox>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QFont>
|
||||
#include <QFontDatabase>
|
||||
#include <QGridLayout>
|
||||
#include <QGroupBox>
|
||||
#include <QLabel>
|
||||
|
|
@ -125,14 +125,7 @@ DlgReportUser::DlgReportUser(AbstractClient *_client,
|
|||
|
||||
void DlgReportUser::applyChatLogFont()
|
||||
{
|
||||
// Family comes from the ChatLog theme role; size stays caller-side as before.
|
||||
QFont monoFont = themeManager->appFont(AppFont::ChatLog);
|
||||
monoFont.setStyleHint(QFont::Monospace);
|
||||
const int systemPointSize = QFontDatabase::systemFont(QFontDatabase::GeneralFont).pointSize();
|
||||
if (systemPointSize > 0) {
|
||||
monoFont.setPointSize(systemPointSize);
|
||||
}
|
||||
chatLogEdit->setFont(monoFont);
|
||||
chatLogEdit->setFont(report_utils::reportLogFont());
|
||||
}
|
||||
|
||||
void DlgReportUser::actSubmit()
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@
|
|||
#include <QDateTime>
|
||||
#include <QDebug>
|
||||
#include <QFont>
|
||||
#include <QFontDatabase>
|
||||
#include <QGridLayout>
|
||||
#include <QGroupBox>
|
||||
#include <QHBoxLayout>
|
||||
|
|
@ -275,14 +274,7 @@ TabReport::TabReport(TabSupervisor *_tabSupervisor, AbstractClient *_client) : T
|
|||
|
||||
void TabReport::applyChatLogFont()
|
||||
{
|
||||
// Family comes from the ChatLog theme role; size stays caller-side as before.
|
||||
QFont monoFont = themeManager->appFont(AppFont::ChatLog);
|
||||
monoFont.setStyleHint(QFont::Monospace);
|
||||
const int systemPointSize = QFontDatabase::systemFont(QFontDatabase::GeneralFont).pointSize();
|
||||
if (systemPointSize > 0) {
|
||||
monoFont.setPointSize(systemPointSize);
|
||||
}
|
||||
chatLogEdit->setFont(monoFont);
|
||||
chatLogEdit->setFont(report_utils::reportLogFont());
|
||||
}
|
||||
|
||||
void TabReport::retranslateUi()
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#include "report_utils.h"
|
||||
|
||||
#include "../../theme_manager.h"
|
||||
#include "libcockatrice/protocol/pb/serverinfo_report.pb.h"
|
||||
|
||||
#include <QApplication>
|
||||
|
|
@ -7,6 +8,7 @@
|
|||
#include <QChar>
|
||||
#include <QColor>
|
||||
#include <QDateTime>
|
||||
#include <QFontDatabase>
|
||||
#include <QPalette>
|
||||
#include <QSharedPointer>
|
||||
#include <QTableWidget>
|
||||
|
|
@ -19,6 +21,20 @@
|
|||
namespace report_utils
|
||||
{
|
||||
|
||||
QFont reportLogFont()
|
||||
{
|
||||
if (themeManager->hasAppFont(AppFont::ChatLog)) {
|
||||
return themeManager->appFont(AppFont::ChatLog);
|
||||
}
|
||||
QFont monoFont(QStringLiteral("monospace"));
|
||||
monoFont.setStyleHint(QFont::Monospace);
|
||||
const int systemPointSize = QFontDatabase::systemFont(QFontDatabase::GeneralFont).pointSize();
|
||||
if (systemPointSize > 0) {
|
||||
monoFont.setPointSize(systemPointSize);
|
||||
}
|
||||
return monoFont;
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
QColor reportStatusColor(const QString &status)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef REPORT_UTILS_H
|
||||
#define REPORT_UTILS_H
|
||||
|
||||
#include <QFont>
|
||||
#include <QString>
|
||||
#include <QtGlobal>
|
||||
|
||||
|
|
@ -11,6 +12,12 @@ class ServerInfo_Report;
|
|||
namespace report_utils
|
||||
{
|
||||
|
||||
/** @brief Font for the report chat-log views: the theme's ChatLog role when it
|
||||
* sets one, otherwise the monospace font these views used before the
|
||||
* role existed. Shared by the three report surfaces so they cannot
|
||||
* drift apart. */
|
||||
QFont reportLogFont();
|
||||
|
||||
QString formatReportCategory(const QString &category);
|
||||
QString formatReportTime(qint64 secondsSinceEpoch);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue