From 4b343698c3b6722523ff1da652db7ecc6dc8ec2e Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Wed, 22 Mar 2023 14:14:51 +0200 Subject: [PATCH] scripting: Drop registerWindow() workaround desktopchangeosd appears to stop updating because kwin fails to deselect XShape events. --- src/scripting/scripting.cpp | 15 --------------- src/scripting/scripting.h | 1 - src/scripts/desktopchangeosd/contents/ui/osd.qml | 4 ---- src/unmanaged.cpp | 3 +-- 4 files changed, 1 insertion(+), 22 deletions(-) diff --git a/src/scripting/scripting.cpp b/src/scripting/scripting.cpp index 2a36eee71c..3625dbe2ea 100644 --- a/src/scripting/scripting.cpp +++ b/src/scripting/scripting.cpp @@ -609,21 +609,6 @@ QVariant KWin::JSEngineGlobalMethodsWrapper::readConfig(const QString &key, QVar return m_script->config().readEntry(key, defaultValue); } -void KWin::JSEngineGlobalMethodsWrapper::registerWindow(QQuickWindow *window) -{ - if (kwinApp()->operationMode() == Application::OperationModeX11) { - // Windows stop updating if they are remapped. It seems like a bug in QtXCB. - QPointer guard = window; - connect( - window, &QWindow::visibilityChanged, this, [guard](QWindow::Visibility visibility) { - if (guard && visibility == QWindow::Hidden) { - guard->destroy(); - } - }, - Qt::QueuedConnection); - } -} - KWin::Scripting *KWin::Scripting::s_self = nullptr; KWin::Scripting *KWin::Scripting::create(QObject *parent) diff --git a/src/scripting/scripting.h b/src/scripting/scripting.h index 211eb16187..9587874b35 100644 --- a/src/scripting/scripting.h +++ b/src/scripting/scripting.h @@ -298,7 +298,6 @@ public: public Q_SLOTS: QVariant readConfig(const QString &key, QVariant defaultValue = QVariant()); - void registerWindow(QQuickWindow *window); private: DeclarativeScript *m_script; diff --git a/src/scripts/desktopchangeosd/contents/ui/osd.qml b/src/scripts/desktopchangeosd/contents/ui/osd.qml index 75e0b488ae..9f4b191072 100644 --- a/src/scripts/desktopchangeosd/contents/ui/osd.qml +++ b/src/scripts/desktopchangeosd/contents/ui/osd.qml @@ -290,8 +290,4 @@ PlasmaCore.Dialog { dialogItem.show(); } } - - Component.onCompleted: { - KWin.registerWindow(dialog); - } } diff --git a/src/unmanaged.cpp b/src/unmanaged.cpp index f0fa9c6c4b..e9e3831aec 100644 --- a/src/unmanaged.cpp +++ b/src/unmanaged.cpp @@ -19,7 +19,6 @@ #include #include -#include #include #include @@ -149,7 +148,7 @@ void Unmanaged::release(ReleaseReason releaseReason) } Deleted *del = Deleted::create(this); Q_EMIT closed(del); - if (!QWidget::find(window()) && releaseReason != ReleaseReason::Destroyed) { // don't affect our own windows + if (releaseReason != ReleaseReason::Destroyed && !findInternalWindow()) { // don't affect our own windows if (Xcb::Extensions::self()->isShapeAvailable()) { xcb_shape_select_input(kwinApp()->x11Connection(), window(), false); }