From f831c59cc22d1d953f6c749668f034c22b50a8aa Mon Sep 17 00:00:00 2001 From: Yutao Meng Date: Tue, 15 Oct 2024 20:44:51 +0800 Subject: [PATCH] feat: Receive close quick panel requests from plugins Bug: https://pms.uniontech.com/bug-view-272277.html Log: Receive close quick panel requests from plugins --- panels/dock/DockCompositor.qml | 6 ++++++ panels/dock/pluginmanagerextension.cpp | 5 +++++ panels/dock/pluginmanagerextension_p.h | 2 ++ panels/dock/tray/quickpanel/QuickPanel.qml | 4 ++++ 4 files changed, 17 insertions(+) diff --git a/panels/dock/DockCompositor.qml b/panels/dock/DockCompositor.qml index 58a274f65..84c4aec54 100644 --- a/panels/dock/DockCompositor.qml +++ b/panels/dock/DockCompositor.qml @@ -29,6 +29,7 @@ Item { signal pluginSurfacesUpdated() signal popupCreated(var popup) signal requestShutdown(var type) + signal popupClosed() function removeDockPluginSurface(model, object) { for (var i = 0; i < model.count; ++i) { @@ -107,6 +108,11 @@ Item { onRequestShutdown: (type) => { dockCompositor.requestShutdown(type) } + + onPluginCloseQuickPanelPopup: { + console.log("quick panel closed") + dockCompositor.popupClosed() + } } PluginScaleManager{ diff --git a/panels/dock/pluginmanagerextension.cpp b/panels/dock/pluginmanagerextension.cpp index 83d9d38ee..38b2f71a8 100644 --- a/panels/dock/pluginmanagerextension.cpp +++ b/panels/dock/pluginmanagerextension.cpp @@ -207,6 +207,11 @@ void PluginSurface::plugin_request_shutdown(Resource *resource, const QString &t Q_EMIT m_manager->requestShutdown(type); } +void PluginSurface::plugin_close_quick_panel(Resource *resource) { + qInfo() << "close_quick_panel"; + Q_EMIT m_manager->pluginCloseQuickPanelPopup(); +} + void PluginSurface::plugin_destroy_resource(Resource *resource) { Q_UNUSED(resource); diff --git a/panels/dock/pluginmanagerextension_p.h b/panels/dock/pluginmanagerextension_p.h index 51af44132..4804812a0 100644 --- a/panels/dock/pluginmanagerextension_p.h +++ b/panels/dock/pluginmanagerextension_p.h @@ -78,6 +78,7 @@ class PluginManager : public QWaylandCompositorExtensionTemplate, Q_SIGNALS: void pluginPopupCreated(PluginPopup*); + void pluginCloseQuickPanelPopup(); void pluginSurfaceCreated(PluginSurface*); void pluginSurfaceDestroyed(PluginSurface*); void messageRequest(PluginSurface *, const QString &msg); @@ -177,6 +178,7 @@ class PluginSurface : public QWaylandShellSurfaceTemplate, public virtual void plugin_mouse_event(Resource *resource, int32_t type) override; virtual void plugin_dcc_icon(Resource *resource, const QString &icon) override; virtual void plugin_request_shutdown(Resource *resource, const QString &type) override; + virtual void plugin_close_quick_panel(Resource *resource) override; virtual void plugin_destroy_resource(Resource *resource) override; virtual void plugin_destroy(Resource *resource) override; virtual void plugin_source_size(Resource *resource, int32_t width, int32_t height) override; diff --git a/panels/dock/tray/quickpanel/QuickPanel.qml b/panels/dock/tray/quickpanel/QuickPanel.qml index ed35e6e24..5baccd47e 100644 --- a/panels/dock/tray/quickpanel/QuickPanel.qml +++ b/panels/dock/tray/quickpanel/QuickPanel.qml @@ -132,5 +132,9 @@ Item { quickpanelModel.requestShowSubPlugin(popupSurface.pluginId, popupSurface) } } + + function onPopupClosed() { + popup.close() + } } }