QKdeTheme: de-inline dtor; make ctor explicit

1/
A QStringList and an int are not a faithful representation of a KDE
Theme, so the ctor should be explicit. Make it so™.

2/
As a polymorphic class, the (undeclared, therefore inline) dtor may
cause weak vtables to be emitted, with all the bad side-effects
described in the docs of -Wweak-vtable and QTBUG-45582. Mark the dtor
out-of-line in the usual way (= default'ing, but in the .cpp file).

Amends 53fb13456fffe8bfd192f9197c6d1703854b49a2.

Task-number: QTBUG-45582
Task-number: QTBUG-132929
Task-number: QTBUG-135037
Change-Id: Ie0c14e60d76d2205c2025598ac31a917dbf870b1
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
This commit is contained in:
Marc Mutz 2025-03-21 22:42:54 +01:00
parent 4c2d3b7a4c
commit e9d4412538
2 changed files with 5 additions and 1 deletions

View File

@ -544,6 +544,9 @@ QKdeTheme::QKdeTheme(const QStringList& kdeDirs, int kdeVersion)
d_func()->refresh();
}
QKdeTheme::~QKdeTheme()
= default;
QFont *QKdeThemePrivate::kdeFont(const QVariant &fontValue)
{
if (fontValue.isValid()) {

View File

@ -29,7 +29,8 @@ class Q_GUI_EXPORT QKdeTheme : public QGenericUnixTheme
{
Q_DECLARE_PRIVATE(QKdeTheme)
public:
QKdeTheme(const QStringList& kdeDirs, int kdeVersion);
explicit QKdeTheme(const QStringList& kdeDirs, int kdeVersion);
~QKdeTheme() override;
static QPlatformTheme *createKdeTheme();
QVariant themeHint(ThemeHint hint) const override;