summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrj <rj@rj>2013-11-17 23:02:30 +0100
committerrj <rj@rj>2013-11-17 23:02:30 +0100
commit97a8e435576fe391543d11101f6cbc14ccc143e7 (patch)
treee6b025e167c3ea18c6decb2dc34a7159ad1f14a5
parent48c1e3e74a76b5d061241d8cfb734f2664db10cb (diff)
fixed plugin drag&drop
-rw-r--r--ChangeLog2
-rw-r--r--muse2/muse/mixer/rack.cpp34
2 files changed, 24 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 30ebbd78..a724e050 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,5 @@
+17.10.2013:
+ - Fixed drag&drop plugins sometimes not working when built with optimize (rj)
10.10.2013:
- Added a visual metronome to Bigtime (rj)
09.10.2013:
diff --git a/muse2/muse/mixer/rack.cpp b/muse2/muse/mixer/rack.cpp
index aa679d5f..7e8ac4ee 100644
--- a/muse2/muse/mixer/rack.cpp
+++ b/muse2/muse/mixer/rack.cpp
@@ -48,6 +48,8 @@
namespace MusEGui {
+QString MUSE_MIME_TYPE = "text/x-muse-plugin";
+
//---------------------------------------------------------
// class EffectRackDelegate
//---------------------------------------------------------
@@ -517,14 +519,13 @@ void EffectRack::startDrag(int idx)
QString xmlconf;
xml.dump(xmlconf);
- printf("[%s]\n", xmlconf.toLatin1().constData());
-
-
- QByteArray data(xmlconf.toLatin1().constData());
- //printf("sending %d [%s]\n", data.length(), xmlconf.toLatin1().constData());
QMimeData* md = new QMimeData();
-
- md->setData("text/x-muse-plugin", data);
+ QByteArray data(xmlconf.toLatin1().constData());
+
+ if (MusEGlobal::debugMsg)
+ printf("Sending %d [%s]\n", data.length(), xmlconf.toLatin1().constData());
+
+ md->setData(MUSE_MIME_TYPE, data);
QDrag* drag = new QDrag(this);
drag->setMimeData(md);
@@ -541,12 +542,12 @@ QStringList EffectRack::mimeTypes() const
{
QStringList mTypes;
mTypes << "text/uri-list";
- mTypes << "text/x-muse-plugin";
+ mTypes << MUSE_MIME_TYPE;
return mTypes;
}
void EffectRack::dropEvent(QDropEvent *event)
- {
+{
QString text;
QListWidgetItem *i = itemAt( event->pos() );
if (!i)
@@ -585,10 +586,19 @@ void EffectRack::dropEvent(QDropEvent *event)
}
}
- if(event->mimeData()->hasFormat("text/x-muse-plugin"))
+ if(event->mimeData()->hasFormat(MUSE_MIME_TYPE))
{
- MusECore::Xml xml(event->mimeData()->data("text/x-muse-plugin").data());
+ char *mimedata = new char[event->mimeData()->data(MUSE_MIME_TYPE).size() + 2];
+ strcpy(mimedata, event->mimeData()->data(MUSE_MIME_TYPE).constData());
+ MusECore::Xml xml(mimedata);
+ if (MusEGlobal::debugMsg) {
+ QString xmlconf;
+ xml.dump(xmlconf);
+ printf("received %d [%s]\n", event->mimeData()->data(MUSE_MIME_TYPE).size(), mimedata);
+ }
+
initPlugin(xml, idx);
+ delete mimedata;
}
else
if (event->mimeData()->hasUrls())
@@ -617,7 +627,7 @@ void EffectRack::dropEvent(QDropEvent *event)
}
}
}
- }
+}
void EffectRack::dragEnterEvent(QDragEnterEvent *event)
{