cleanup(plugin): remove dependency on unstable moc functions

This commit is contained in:
outfoxxed 2024-02-26 00:08:30 -08:00
parent 3bd587cfcc
commit c0faebc700
Signed by: outfoxxed
GPG key ID: 4C88A185FB89301E
2 changed files with 11 additions and 9 deletions

View file

@ -3,9 +3,6 @@
#include <qvector.h> // NOLINT (what??)
// defined by moc. see below comment.
void qml_register_types_QuickShell(); // NOLINT
static QVector<QuickshellPlugin*> plugins; // NOLINT
void QuickshellPlugin::registerPlugin(QuickshellPlugin& plugin) { plugins.push_back(&plugin); }
@ -24,11 +21,6 @@ void QuickshellPlugin::initPlugins() {
plugin->init();
}
// This seems incredibly stupid but it appears qt will not register the module types
// if types are already defined for the module, meaning qmlRegisterType does not work
// unless the module types are already registered.
qml_register_types_QuickShell();
for (QuickshellPlugin* plugin: plugins) {
plugin->registerTypes();
}

View file

@ -10,7 +10,17 @@ class WaylandPlugin: public QuickshellPlugin {
bool applies() override { return QGuiApplication::platformName() == "wayland"; }
void registerTypes() override {
qmlRegisterType<WaylandPanelInterface>("QuickShell", 1, 0, "PanelWindow");
qmlRegisterType<WaylandPanelInterface>("QuickShell._WaylandOverlay", 1, 0, "PanelWindow");
// If any types are defined inside a module using QML_ELEMENT then all QML_ELEMENT types
// will not be registered. This can be worked around with a module import which makes
// the QML_ELMENT module import the old register-type style module.
qmlRegisterModuleImport(
"QuickShell",
QQmlModuleImportModuleAny,
"QuickShell._WaylandOverlay",
QQmlModuleImportLatest
);
}
};