adjust processMimeData to work with paste plugin
This commit is contained in:
parent
5fd1d5d0de
commit
087bc4d8fe
@ -153,16 +153,14 @@ QVariantList ContainmentInterface::availableScreenRegion(int id) const
|
|||||||
return regVal;
|
return regVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContainmentInterface::processMimeData(QMimeData *data, int x, int y)
|
void ContainmentInterface::processMimeData(QMimeData *mimeData, int x, int y)
|
||||||
{
|
{
|
||||||
const QMimeData *mimeData = data;
|
|
||||||
|
|
||||||
if (!mimeData) {
|
if (!mimeData) {
|
||||||
QClipboard *clipboard = QGuiApplication::clipboard();
|
return;
|
||||||
mimeData = clipboard->mimeData(QClipboard::Selection);
|
|
||||||
//TODO if that's not supported (ie non-linux) should we try clipboard instead of selection?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//const QMimeData *mimeData = data;
|
||||||
|
|
||||||
qDebug() << "Arrived mimeData" << mimeData->urls() << mimeData->formats() << "at" << x << ", " << y;
|
qDebug() << "Arrived mimeData" << mimeData->urls() << mimeData->formats() << "at" << x << ", " << y;
|
||||||
|
|
||||||
if (mimeData->hasFormat("text/x-plasmoidservicename")) {
|
if (mimeData->hasFormat("text/x-plasmoidservicename")) {
|
||||||
@ -275,12 +273,25 @@ void ContainmentInterface::mousePressEvent(QMouseEvent *event)
|
|||||||
|
|
||||||
void ContainmentInterface::mouseReleaseEvent(QMouseEvent *event)
|
void ContainmentInterface::mouseReleaseEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
if (!containment()->containmentActions().contains(Plasma::ContainmentActions::eventToString(event))) {
|
const QString trigger = Plasma::ContainmentActions::eventToString(event);
|
||||||
|
Plasma::ContainmentActions *plugin = containment()->containmentActions().value(trigger);
|
||||||
|
|
||||||
|
if (!plugin || plugin->contextualActions().isEmpty()) {
|
||||||
event->setAccepted(false);
|
event->setAccepted(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QMenu desktopMenu;
|
|
||||||
|
//the plugin can be a single action or a context menu
|
||||||
|
//Don't have an action list? execute as single action
|
||||||
|
//and set the event position as action data
|
||||||
|
if (plugin->contextualActions().length() == 1) {
|
||||||
|
QAction *action = plugin->contextualActions().first();
|
||||||
|
action->setData(event->pos());
|
||||||
|
action->trigger();
|
||||||
|
event->accept();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//FIXME: very inefficient appletAt() implementation
|
//FIXME: very inefficient appletAt() implementation
|
||||||
Plasma::Applet *applet = 0;
|
Plasma::Applet *applet = 0;
|
||||||
@ -296,6 +307,8 @@ void ContainmentInterface::mouseReleaseEvent(QMouseEvent *event)
|
|||||||
}
|
}
|
||||||
qDebug() << "Invoking menu for applet" << applet;
|
qDebug() << "Invoking menu for applet" << applet;
|
||||||
|
|
||||||
|
QMenu desktopMenu;
|
||||||
|
|
||||||
if (applet) {
|
if (applet) {
|
||||||
addAppletActions(desktopMenu, applet, event);
|
addAppletActions(desktopMenu, applet, event);
|
||||||
} else {
|
} else {
|
||||||
@ -398,8 +411,6 @@ void ContainmentInterface::addContainmentActions(QMenu &desktopMenu, QEvent *eve
|
|||||||
Plasma::ContainmentActions *plugin = containment()->containmentActions().value(trigger);
|
Plasma::ContainmentActions *plugin = containment()->containmentActions().value(trigger);
|
||||||
|
|
||||||
if (!plugin) {
|
if (!plugin) {
|
||||||
//FIXME: this action is here only for testing purposes, remove it when plugins work
|
|
||||||
desktopMenu.addAction(containment()->actions()->action("configure"));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user