diff --git a/frame/util/docksettings.cpp b/frame/util/docksettings.cpp index 7de277e47..05ab87f54 100644 --- a/frame/util/docksettings.cpp +++ b/frame/util/docksettings.cpp @@ -305,6 +305,8 @@ void DockSettings::showDockSettingsMenu() m_autoHide = false; + bool hasComposite = DWindowManagerHelper::instance()->hasComposite(); + // create actions QList actions; for (auto *p : m_itemManager->pluginList()) { @@ -319,6 +321,10 @@ void DockSettings::showDockSettingsMenu() continue; } + if (name == "multitasking" && !hasComposite) { + continue; + } + QAction *act = new QAction(display, this); act->setCheckable(true); act->setChecked(enable); diff --git a/plugins/multitasking/CMakeLists.txt b/plugins/multitasking/CMakeLists.txt index ec7405847..618ddcd0f 100644 --- a/plugins/multitasking/CMakeLists.txt +++ b/plugins/multitasking/CMakeLists.txt @@ -16,6 +16,7 @@ add_definitions("${QT_DEFINITIONS} -DQT_PLUGIN") add_library(${PLUGIN_NAME} SHARED ${SRCS} resource.qrc) set_target_properties(${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../) target_include_directories(${PLUGIN_NAME} PUBLIC ${DtkWidget_INCLUDE_DIRS} ../../interfaces) + target_link_libraries(${PLUGIN_NAME} PRIVATE ${Qt5DBus_LIBRARIES} ${DtkWidget_LIBRARIES} diff --git a/plugins/multitasking/multitaskingplugin.cpp b/plugins/multitasking/multitaskingplugin.cpp index fc4273585..455314353 100644 --- a/plugins/multitasking/multitaskingplugin.cpp +++ b/plugins/multitasking/multitaskingplugin.cpp @@ -22,9 +22,12 @@ #include "multitaskingplugin.h" #include "../widgets/tipswidget.h" +#include + #include #define PLUGIN_STATE_KEY "enable" +DGUI_USE_NAMESPACE using namespace Dock; MultitaskingPlugin::MultitaskingPlugin(QObject *parent) @@ -34,6 +37,17 @@ MultitaskingPlugin::MultitaskingPlugin(QObject *parent) { m_tipsLabel->setVisible(false); m_tipsLabel->setObjectName("multitasking"); + + connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::hasCompositeChanged, this, [ = ] { + if (!m_proxyInter) + return; + + if (DWindowManagerHelper::instance()->hasComposite()) { + m_proxyInter->itemAdded(this, PLUGIN_KEY); + } else { + m_proxyInter->itemRemoved(this, PLUGIN_KEY); + } + }); } const QString MultitaskingPlugin::pluginName() const @@ -165,10 +179,11 @@ PluginsItemInterface::PluginType MultitaskingPlugin::type() void MultitaskingPlugin::updateVisible() { - if (pluginIsDisable()) + if (pluginIsDisable() || !DWindowManagerHelper::instance()->hasComposite()) { m_proxyInter->itemRemoved(this, PLUGIN_KEY); - else + } else { m_proxyInter->itemAdded(this, PLUGIN_KEY); + } } void MultitaskingPlugin::loadPlugin() diff --git a/plugins/multitasking/multitaskingplugin.h b/plugins/multitasking/multitaskingplugin.h index a9c362e12..20c29c97a 100644 --- a/plugins/multitasking/multitaskingplugin.h +++ b/plugins/multitasking/multitaskingplugin.h @@ -26,6 +26,7 @@ #include "multitaskingwidget.h" #include + namespace Dock { class TipsWidget; }