Advance Wayland and KDE package bring-up
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
SPDX-FileCopyrightText: 1996 Bernd Johannes Wuebben <wuebben@kde.org>
|
||||
SPDX-FileCopyrightText: 1999 Preston Brown <pbrown@kde.org>
|
||||
SPDX-FileCopyrightText: 1999 Mario Weilguni <mweilguni@kde.org>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include "kfontchooserdialog.h"
|
||||
|
||||
#include <QDialogButtonBox>
|
||||
#include <QPointer>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
class KFontChooserDialogPrivate
|
||||
{
|
||||
public:
|
||||
KFontChooser *m_fontChooser = nullptr;
|
||||
};
|
||||
|
||||
KFontChooserDialog::KFontChooserDialog(const KFontChooser::DisplayFlags &flags, QWidget *parent)
|
||||
: QDialog(parent)
|
||||
, d(new KFontChooserDialogPrivate)
|
||||
{
|
||||
setWindowTitle(tr("Select Font", "@title:window"));
|
||||
d->m_fontChooser = new KFontChooser(flags, this);
|
||||
d->m_fontChooser->setMinVisibleItems(8);
|
||||
d->m_fontChooser->setObjectName(QStringLiteral("fontChooser"));
|
||||
|
||||
connect(d->m_fontChooser, &KFontChooser::fontSelected, this, &KFontChooserDialog::fontSelected);
|
||||
|
||||
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||
QVBoxLayout *mainLayout = new QVBoxLayout(this);
|
||||
mainLayout->addWidget(d->m_fontChooser);
|
||||
mainLayout->addWidget(buttonBox);
|
||||
|
||||
connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
|
||||
connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
|
||||
}
|
||||
|
||||
KFontChooserDialog::~KFontChooserDialog() = default;
|
||||
|
||||
void KFontChooserDialog::setFont(const QFont &font, bool onlyFixed)
|
||||
{
|
||||
d->m_fontChooser->setFont(font, onlyFixed);
|
||||
}
|
||||
|
||||
QFont KFontChooserDialog::font() const
|
||||
{
|
||||
return d->m_fontChooser->font();
|
||||
}
|
||||
|
||||
// If the styleName property is set for a QFont, using setBold(true) would
|
||||
// lead to Qt using an "emboldended"/synthetic font style instead of using
|
||||
// the bold style provided by the font itself; the latter looks better than
|
||||
// the former, also accorgin to upstream, the styleName property is useful
|
||||
// for fancy font styles, so there is no point in setting it for "Regular"
|
||||
// fonts. For more details see:
|
||||
// https://bugreports.qt.io/browse/QTBUG-63792
|
||||
// https://bugs.kde.org/show_bug.cgi?id=378523
|
||||
static void stripRegularStyleName(QFont &font)
|
||||
{
|
||||
if (font.weight() == QFont::Normal //
|
||||
&& (font.styleName() == QLatin1String("Regular") //
|
||||
|| font.styleName() == QLatin1String("Normal") //
|
||||
|| font.styleName() == QLatin1String("Book") //
|
||||
|| font.styleName() == QLatin1String("Roman"))) {
|
||||
font.setStyleName(QString());
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
int KFontChooserDialog::getFontDiff(QFont &theFont, KFontChooser::FontDiffFlags &diffFlags, const KFontChooser::DisplayFlags &flags, QWidget *parent)
|
||||
{
|
||||
QPointer<KFontChooserDialog> dialog = new KFontChooserDialog(flags | KFontChooser::ShowDifferences, parent);
|
||||
dialog->setObjectName(QStringLiteral("Font Selector"));
|
||||
dialog->setFont(theFont, flags & KFontChooser::FixedFontsOnly);
|
||||
|
||||
const int result = dialog->exec();
|
||||
if (result == Accepted) {
|
||||
theFont = dialog->d->m_fontChooser->font();
|
||||
diffFlags = dialog->d->m_fontChooser->fontDiffFlags();
|
||||
stripRegularStyleName(theFont);
|
||||
}
|
||||
delete dialog;
|
||||
return result;
|
||||
}
|
||||
|
||||
// static
|
||||
int KFontChooserDialog::getFont(QFont &theFont, const KFontChooser::DisplayFlags &flags, QWidget *parent)
|
||||
{
|
||||
QPointer<KFontChooserDialog> dialog = new KFontChooserDialog(flags, parent);
|
||||
dialog->setObjectName(QStringLiteral("Font Selector"));
|
||||
dialog->setFont(theFont, flags & KFontChooser::FixedFontsOnly);
|
||||
|
||||
const int result = dialog->exec();
|
||||
if (result == Accepted) {
|
||||
theFont = dialog->d->m_fontChooser->font();
|
||||
stripRegularStyleName(theFont);
|
||||
}
|
||||
delete dialog;
|
||||
return result;
|
||||
}
|
||||
|
||||
#include "moc_kfontchooserdialog.cpp"
|
||||
Reference in New Issue
Block a user