Workaround palette not set on new windows

qt66
Nicolas Werner 1 year ago
parent 838b091acd
commit 8485e7ae81
No known key found for this signature in database
GPG Key ID: C8D75E610773F2D9
  1. 14
      src/MainWindow.cpp
  2. 13
      src/MainWindow.h
  3. 3
      src/main.cpp

@ -376,6 +376,20 @@ MainWindow::showChatPage()
emit switchToChatPage();
}
bool
NhekoFixupPaletteEventFilter::eventFilter(QObject *obj, QEvent *event)
{
// Workaround for the QGuiApplication palette not being applied to toplevel windows for some
// reason?!?
if (event->type() == QEvent::ChildAdded &&
obj->metaObject()->className() == QStringLiteral("QQuickRootItem")) {
for (const auto window : QGuiApplication::topLevelWindows()) {
QGuiApplication::postEvent(window, new QEvent(QEvent::ApplicationPaletteChange));
}
}
return false;
}
void
MainWindow::closeEvent(QCloseEvent *event)
{

@ -37,6 +37,19 @@ class MemberList;
class ReCaptcha;
}
class NhekoFixupPaletteEventFilter final : public QObject
{
Q_OBJECT
public:
NhekoFixupPaletteEventFilter(QObject *parent)
: QObject(parent)
{
}
bool eventFilter(QObject *obj, QEvent *event) override;
};
class MainWindow final : public QQuickView
{
Q_OBJECT

@ -309,6 +309,9 @@ main(int argc, char *argv[])
std::exit(1);
}
auto filter = new NhekoFixupPaletteEventFilter(&app);
app.installEventFilter(filter);
if (parser.isSet(configName))
UserSettings::initialize(parser.value(configName));
else

Loading…
Cancel
Save