From 16ca6eaee92e87b14bc4dd84d38817f05a1f5651 Mon Sep 17 00:00:00 2001 From: dengbo <79958313+dengbo11@users.noreply.github.com> Date: Tue, 21 Feb 2023 13:47:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BB=BB=E5=8A=A1=E6=A0=8F=E5=A4=9A?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E8=A7=86=E5=9B=BE=E4=B8=8D=E8=83=BD=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E7=A7=BB=E9=99=A4=20(#771)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.通过任务栏右键移除按钮时,移除对应插件 2.显示桌面和多任务视图需要加入到快捷插件显示中 Log: 修复任务栏多任务视图不能正常移除的问题 Bug: https://github.com/linuxdeepin/developer-center/issues/3599 Influence: 任务栏显示桌面合多任务视图插件的显示 --- configs/com.deepin.dde.dock.dconfig.json | 2 +- plugins/multitasking/multitaskingplugin.cpp | 7 +-- plugins/show-desktop/showdesktopplugin.cpp | 64 ++------------------- plugins/show-desktop/showdesktopplugin.h | 10 ---- 4 files changed, 8 insertions(+), 75 deletions(-) diff --git a/configs/com.deepin.dde.dock.dconfig.json b/configs/com.deepin.dde.dock.dconfig.json index 6b1f34a47..da2b97c2e 100644 --- a/configs/com.deepin.dde.dock.dconfig.json +++ b/configs/com.deepin.dde.dock.dconfig.json @@ -17,7 +17,7 @@ "visibility":"public" }, "Dock_Quick_Plugins": { - "value": ["power", "network", "shutdown", "trash"], + "value": ["power", "network", "shutdown", "trash", "show-desktop", "multitasking"], "serial": 0, "flags": [], "name": "显示在任务栏上的快捷插件", diff --git a/plugins/multitasking/multitaskingplugin.cpp b/plugins/multitasking/multitaskingplugin.cpp index 46ff2e64b..4be4fe2e8 100644 --- a/plugins/multitasking/multitaskingplugin.cpp +++ b/plugins/multitasking/multitaskingplugin.cpp @@ -11,7 +11,6 @@ #include -#define PLUGIN_STATE_KEY "enable" DGUI_USE_NAMESPACE using namespace Dock; @@ -121,7 +120,7 @@ void MultitaskingPlugin::invokedMenuItem(const QString &itemKey, const QString & .arg(1) .call(); } else if (menuId == "remove") { - pluginStateSwitched(); + m_proxyInter->itemRemoved(this, PLUGIN_KEY); } } @@ -153,5 +152,5 @@ PluginsItemInterface::PluginType MultitaskingPlugin::type() PluginFlags MultitaskingPlugin::flags() const { - return PluginFlag::Type_Fixed | PluginFlag::Attribute_ForceDock; -} + return PluginFlag::Type_Fixed | Attribute_CanSetting; +} \ No newline at end of file diff --git a/plugins/show-desktop/showdesktopplugin.cpp b/plugins/show-desktop/showdesktopplugin.cpp index a8a6576c4..eea14d1a1 100644 --- a/plugins/show-desktop/showdesktopplugin.cpp +++ b/plugins/show-desktop/showdesktopplugin.cpp @@ -9,11 +9,9 @@ #include #include -#define PLUGIN_STATE_KEY "enable" using namespace Dock; ShowDesktopPlugin::ShowDesktopPlugin(QObject *parent) : QObject(parent) - , m_pluginLoaded(false) , m_showDesktopWidget(nullptr) , m_tipsLabel(new TipsWidget) { @@ -51,21 +49,8 @@ void ShowDesktopPlugin::init(PluginProxyInterface *proxyInter) { m_proxyInter = proxyInter; - if (!pluginIsDisable()) { - loadPlugin(); - } -} - -void ShowDesktopPlugin::pluginStateSwitched() -{ - m_proxyInter->saveValue(this, PLUGIN_STATE_KEY, pluginIsDisable()); - - refreshPluginItemsVisible(); -} - -bool ShowDesktopPlugin::pluginIsDisable() -{ - return !m_proxyInter->getValue(this, PLUGIN_STATE_KEY, true).toBool(); + m_showDesktopWidget.reset(new ShowDesktopWidget); + m_proxyInter->itemAdded(this, pluginName()); } const QString ShowDesktopPlugin::itemCommand(const QString &itemKey) @@ -113,7 +98,7 @@ void ShowDesktopPlugin::invokedMenuItem(const QString &itemKey, const QString &m if (menuId == "show-desktop") { QProcess::startDetached("/usr/lib/deepin-daemon/desktop-toggle", QStringList()); } else if (menuId == "remove") { - pluginStateSwitched(); + m_proxyInter->itemRemoved(this, pluginName()); } } @@ -138,11 +123,6 @@ void ShowDesktopPlugin::setSortKey(const QString &itemKey, const int order) m_proxyInter->saveValue(this, key, order); } -void ShowDesktopPlugin::pluginSettingsChanged() -{ - refreshPluginItemsVisible(); -} - PluginsItemInterface::PluginType ShowDesktopPlugin::type() { return PluginType::Fixed; @@ -150,41 +130,5 @@ PluginsItemInterface::PluginType ShowDesktopPlugin::type() PluginFlags ShowDesktopPlugin::flags() const { - return PluginFlag::Type_Fixed | PluginFlag::Attribute_ForceDock; -} - -void ShowDesktopPlugin::updateVisible() -{ - if (pluginIsDisable()) - m_proxyInter->itemRemoved(this, pluginName()); - else - m_proxyInter->itemAdded(this, pluginName()); -} - -void ShowDesktopPlugin::loadPlugin() -{ - if (m_pluginLoaded) { - return; - } - - m_pluginLoaded = true; - - m_showDesktopWidget.reset(new ShowDesktopWidget); - - m_proxyInter->itemAdded(this, pluginName()); - - updateVisible(); -} - -void ShowDesktopPlugin::refreshPluginItemsVisible() -{ - if (pluginIsDisable()) { - m_proxyInter->itemRemoved(this, pluginName()); - } else { - if (!m_pluginLoaded) { - loadPlugin(); - return; - } - updateVisible(); - } + return PluginFlag::Type_Fixed | Attribute_CanSetting; } diff --git a/plugins/show-desktop/showdesktopplugin.h b/plugins/show-desktop/showdesktopplugin.h index 8ba2547de..10ae53095 100644 --- a/plugins/show-desktop/showdesktopplugin.h +++ b/plugins/show-desktop/showdesktopplugin.h @@ -25,9 +25,7 @@ public: const QString pluginName() const override; const QString pluginDisplayName() const override; void init(PluginProxyInterface *proxyInter) override; - void pluginStateSwitched() override; bool pluginIsAllowDisable() override { return true; } - bool pluginIsDisable() override; QWidget *itemWidget(const QString &itemKey) override; QWidget *itemTipsWidget(const QString &itemKey) override; const QString itemCommand(const QString &itemKey) override; @@ -36,18 +34,10 @@ public: void refreshIcon(const QString &itemKey) override; int itemSortKey(const QString &itemKey) override; void setSortKey(const QString &itemKey, const int order) override; - void pluginSettingsChanged() override; PluginType type() override; PluginFlags flags() const override; private: - void updateVisible(); - void loadPlugin(); - void refreshPluginItemsVisible(); - -private: - bool m_pluginLoaded; - QScopedPointer m_showDesktopWidget; QScopedPointer m_tipsLabel; };