diff options
author | rj <rj@rj> | 2013-11-17 23:02:30 +0100 |
---|---|---|
committer | rj <rj@rj> | 2013-11-17 23:02:30 +0100 |
commit | 97a8e435576fe391543d11101f6cbc14ccc143e7 (patch) | |
tree | e6b025e167c3ea18c6decb2dc34a7159ad1f14a5 | |
parent | 48c1e3e74a76b5d061241d8cfb734f2664db10cb (diff) |
fixed plugin drag&drop
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | muse2/muse/mixer/rack.cpp | 34 |
2 files changed, 24 insertions, 12 deletions
@@ -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) { |