scripting: Fix registration of some types

We need to register data types such as QVector<KWin::VirtualDesktop *>
both for QML and JavaScript scripts.

If you have no JavaScript scripts enabled, those container types won't
be registered and QML will fail to read properties such as
Window.desktops, which can result in already visible windows animating
opacity from 0 to 1 when opening overview effect.

To fix that, register all accessible data types in scripting apis in
Scripting::init().
This commit is contained in:
Vlad Zahorodnii 2023-02-16 16:46:29 +02:00
parent 99b2e6072c
commit 5942c13eba

View file

@ -150,10 +150,6 @@ KWin::Script::Script(int id, QString scriptName, QString pluginName, QObject *pa
if (!QMetaType::hasRegisteredConverterFunction<QJSValue, QSizeF>()) {
QMetaType::registerConverter<QJSValue, QSizeF>(scriptValueToSizeF);
}
qRegisterMetaType<QList<KWin::Output *>>();
qRegisterMetaType<QList<KWin::Window *>>();
qRegisterMetaType<QVector<KWin::VirtualDesktop *>>();
}
KWin::Script::~Script()
@ -673,6 +669,10 @@ KWin::Scripting::Scripting(QObject *parent)
void KWin::Scripting::init()
{
qRegisterMetaType<QList<KWin::Output *>>();
qRegisterMetaType<QList<KWin::Window *>>();
qRegisterMetaType<QVector<KWin::VirtualDesktop *>>();
qmlRegisterType<DesktopBackgroundItem>("org.kde.kwin", 3, 0, "DesktopBackground");
qmlRegisterType<WindowThumbnailItem>("org.kde.kwin", 3, 0, "WindowThumbnail");
qmlRegisterType<DBusCall>("org.kde.kwin", 3, 0, "DBusCall");