fix #532,dont allow to add a second Tasks plasmoid

pull/1/head
Michail Vourlakos 8 years ago
parent c6fca20143
commit c8878792bb

@ -1180,6 +1180,29 @@ bool DockView::tasksPresent()
return false;
}
//!check if the plasmoid with _name_ exists in the midedata
bool DockView::mimeContainsPlasmoid(QMimeData *mimeData, QString name)
{
if (!mimeData) {
return false;
}
if (mimeData->hasFormat(QStringLiteral("text/x-plasmoidservicename"))) {
QString data = mimeData->data(QStringLiteral("text/x-plasmoidservicename"));
const QStringList appletNames = data.split('\n', QString::SkipEmptyParts);
foreach (const QString &appletName, appletNames) {
qDebug() << "adding" << appletName;
if (appletName == name)
return true;
}
}
return false;
}
VisibilityManager *DockView::visibility() const
{
return m_visibility;

@ -29,6 +29,7 @@
#include <QQuickView>
#include <QQmlListProperty>
#include <QMenu>
#include <QMimeData>
#include <QScreen>
#include <QPointer>
#include <QTimer>
@ -165,14 +166,18 @@ public slots:
Q_INVOKABLE QList<int> freeEdges() const;
Q_INVOKABLE QVariantList containmentActions();
Q_INVOKABLE int docksWithTasks();
Q_INVOKABLE void deactivateApplets();
Q_INVOKABLE void removeTasksPlasmoid();
Q_INVOKABLE bool setCurrentScreen(const QString id);
Q_INVOKABLE bool tasksPresent();
Q_INVOKABLE void toggleAppletExpanded(const int id);
Q_INVOKABLE void updateEnabledBorders();
Q_INVOKABLE int docksWithTasks();
Q_INVOKABLE bool mimeContainsPlasmoid(QMimeData *mimeData, QString name);
Q_INVOKABLE bool setCurrentScreen(const QString id);
Q_INVOKABLE bool tasksPresent();
Q_INVOKABLE void closeApplication();
void updateAbsDockGeometry(bool bypassChecks = false);

@ -378,10 +378,10 @@ DragDrop.DropArea {
slotAnimationsNeedLength(1);
}
//var relevantLayout = layoutsContainer.mainLayout.mapFromItem(root, event.x, event.y);
//LayoutManager.insertAtCoordinates2(dndSpacer, relevantLayout.x, relevantLayout.y)
LayoutManager.insertAtCoordinates2(dndSpacer, event.x, event.y)
dndSpacer.opacity = 1;
if (!latteApplet || (latteApplet && !dock.mimeContainsPlasmoid(event.mimeData, "org.kde.latte.plasmoid"))) {
LayoutManager.insertAtCoordinates2(dndSpacer, event.x, event.y)
dndSpacer.opacity = 1;
}
}
onDragMove: {
@ -398,10 +398,10 @@ DragDrop.DropArea {
}
}
//var relevantLayout = layoutsContainer.mainLayout.mapFromItem(root, event.x, event.y);
//LayoutManager.insertAtCoordinates2(dndSpacer, relevantLayout.x, relevantLayout.y)
LayoutManager.insertAtCoordinates2(dndSpacer, event.x, event.y)
dndSpacer.opacity = 1;
if (!latteApplet || (latteApplet && !dock.mimeContainsPlasmoid(event.mimeData, "org.kde.latte.plasmoid"))) {
LayoutManager.insertAtCoordinates2(dndSpacer, event.x, event.y)
dndSpacer.opacity = 1;
}
}
onDragLeave: {
@ -423,7 +423,7 @@ DragDrop.DropArea {
if (event.mimeData.formats.indexOf("application/x-orgkdeplasmataskmanager_taskbuttonitem") < 0) {
if (latteApplet && latteApplet.launchersDrop(event) && root.addLaunchersInTaskManager) {
latteApplet.launchersDropped(event.mimeData.urls);
} else {
} else if (!latteApplet || (latteApplet && !dock.mimeContainsPlasmoid(event.mimeData, "org.kde.latte.plasmoid"))) {
plasmoid.processMimeData(event.mimeData, event.x, event.y);
event.accept(event.proposedAction);
}

Loading…
Cancel
Save