Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/loader/pluginitem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -358,3 +358,12 @@ void PluginItem::updatePluginContentMargin(int spacing)
setFixedSize(sizeHint());
}
}

bool PluginItem::isForceUndock(int pluginFlag)
{
if (pluginFlag & Attribute_ForceUnDock) {
return true;
}

return false;
}
4 changes: 4 additions & 0 deletions src/loader/pluginitem.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

#include <QWidget>

const int Attribute_ForceUnDock = 0x800000;

class QMenu;
class PluginItem : public QWidget
{
Expand All @@ -30,6 +32,8 @@ class PluginItem : public QWidget

void updatePluginContentMargin(int spacing);

static bool isForceUndock(int pluginFlag);

signals:
void recvMouseEvent(int type);

Expand Down
8 changes: 5 additions & 3 deletions src/loader/quickpluginitem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,11 @@ void QuickPluginItem::mouseReleaseEvent(QMouseEvent *e)
}
}
e->accept();
}
} else if (e->button() == Qt::LeftButton) {
executeCommand();
}

QWidget::mouseReleaseEvent(e);
QWidget::mouseReleaseEvent(e);
}

QMenu *QuickPluginItem::pluginContextMenu()
Expand All @@ -149,7 +151,7 @@ QMenu *QuickPluginItem::pluginContextMenu()
initPluginMenu();

int flags = pluginFlags();
if (flags & Dock::Attribute_CanSetting) {
if (flags & Dock::Attribute_CanSetting && !isForceUndock(flags)) {
if (!m_onDockAction) {
m_onDockAction = new QAction();
}
Expand Down
27 changes: 18 additions & 9 deletions src/loader/widgetplugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,10 @@ void WidgetPlugin::itemAdded(PluginsItemInterface * const itemInter, const QStri
}
if (flag & Dock::Type_Quick || flag & Dock::Type_System
|| flag & Dock::Type_Tray) {
if (PluginItem::isForceUndock(flag)) {
return;
}

if (!Plugin::EmbedPlugin::contains(itemInter->pluginName(), Plugin::EmbedPlugin::Tray, itemKey) && m_pluginsItemInterface->itemWidget(itemKey)) {
PluginItem *item = new PluginItem(itemInter, itemKey);
item->init();
Expand Down Expand Up @@ -335,16 +339,21 @@ int WidgetPlugin::getPluginFlags()

auto pluginsItemInterfaceV2 = dynamic_cast<PluginsItemInterfaceV2 *>(m_pluginsItemInterface);
if (pluginsItemInterfaceV2) {
return pluginsItemInterfaceV2->flags();
}

bool ok;
auto flags = m_pluginInstance->property("pluginFlags").toInt(&ok);
if (!ok) {
qWarning() << "failed to pluginFlags toInt!";
return defaultPluginFlags;
Dock::PluginFlags flags;
flags = pluginsItemInterfaceV2->flags();
if (pluginsItemInterfaceV2->pluginName() == "grand-search") {
flags |= (Dock::PluginFlag)Attribute_ForceUnDock;
}
return flags;
} else {
bool ok;
auto flags = m_pluginInstance->property("pluginFlags").toInt(&ok);
if (!ok) {
qWarning() << "failed to pluginFlags toInt!";
return defaultPluginFlags;
}
return flags;
}
return flags;
}

QString WidgetPlugin::messageCallback(PluginsItemInterfaceV2 *pluginItem, const QString &msg)
Expand Down