diff --git a/libmscore/box.cpp b/libmscore/box.cpp index 4b17f81ac3..3e90defc5b 100644 --- a/libmscore/box.cpp +++ b/libmscore/box.cpp @@ -424,6 +424,8 @@ bool Box::acceptDrop(MuseScoreView*, const QPointF&, Element* e) const case LAYOUT_BREAK: case TEXT: case STAFF_TEXT: + case IMAGE: + case SYMBOL: return true; case ICON: switch(static_cast(e)->iconType()) { diff --git a/libmscore/edit.cpp b/libmscore/edit.cpp index c54ebb265b..47555cc44c 100644 --- a/libmscore/edit.cpp +++ b/libmscore/edit.cpp @@ -1063,48 +1063,6 @@ void Score::cmdFlip() _layoutAll = true; // must be set in und/redo } -//--------------------------------------------------------- -// cmdAddBSymbol -// add Symbol or Image -//--------------------------------------------------------- - -void Score::cmdAddBSymbol(BSymbol* s, const QPointF& pos, const QPointF& off) - { - s->setSelected(false); - bool foundPage = false; - foreach (Page* page, pages()) { - if (page->contains(pos - page->pagePos())) { - const QList* sl = page->systems(); - if (sl->isEmpty()) { - qDebug("addSymbol: cannot put symbol here: no system on page"); - delete s; - return; - } - System* system = sl->front(); - MeasureBase* m = system->measures().front(); - if (m == 0) { - qDebug("addSymbol: cannot put symbol here: no measure in system"); - delete s; - return; - } - s->setPos(0.0, 0.0); - s->setUserOff(pos - m->pagePos() - off); - s->setTrack(0); - s->setParent(m); - foundPage = true; - break; - } - } - if (!foundPage) { - qDebug("addSymbol: cannot put symbol here: no page: %f %f", pos.x(), pos.y()); - delete s; - return; - } - undoAddElement(s); - addRefresh(s->abbox()); - select(s, SELECT_SINGLE, 0); - } - //--------------------------------------------------------- // deleteItem //--------------------------------------------------------- diff --git a/libmscore/image.cpp b/libmscore/image.cpp index 3164bd3b88..7926471098 100644 --- a/libmscore/image.cpp +++ b/libmscore/image.cpp @@ -494,7 +494,6 @@ void Image::updateGrips(int* grips, QRectF* grip) const void Image::layout() { - qDebug("Image::layout: %d", imageType); if (imageType == IMAGE_SVG && !svgDoc) { if (_storeItem) { svgDoc = new QSvgRenderer(_storeItem->buffer()); diff --git a/libmscore/score.h b/libmscore/score.h index 730ca6b651..46d91c2457 100644 --- a/libmscore/score.h +++ b/libmscore/score.h @@ -546,7 +546,6 @@ class Score : public QObject { void removeElement(Element*); void cmdAddSpanner(Spanner* e, const QPointF& pos); - void cmdAddBSymbol(BSymbol*, const QPointF&, const QPointF&); Note* addNote(Chord*, int pitch); Note* addNote(Chord*, NoteVal ¬eVal); diff --git a/libmscore/symbol.cpp b/libmscore/symbol.cpp index 323eb2fe75..6f69eae828 100644 --- a/libmscore/symbol.cpp +++ b/libmscore/symbol.cpp @@ -160,7 +160,8 @@ QLineF BSymbol::dragAnchor() const if (parent() && parent()->type() == SEGMENT) { System* system = segment()->measure()->system(); qreal y = system->staff(staffIdx())->y() + system->y(); - QPointF anchor(segment()->pageX(), y); +// QPointF anchor(segment()->pageX(), y); + QPointF anchor(segment()->canvasPos().x(), y); return QLineF(canvasPos(), anchor); } else { diff --git a/mscore/dragdrop.cpp b/mscore/dragdrop.cpp index cf605d7f0e..dd1ee144e7 100644 --- a/mscore/dragdrop.cpp +++ b/mscore/dragdrop.cpp @@ -496,23 +496,12 @@ void ScoreView::dropEvent(QDropEvent* event) qDebug("drop image <%s> <%s>", qPrintable(str), qPrintable(str)); Element* el = elementAt(pos); - if (el && (el->type() == Element::NOTE || el->type() == Element::REST)) { - s->setTrack(el->track()); - if (el->type() == Element::NOTE) { - Note* note = (Note*)el; - // s->setTick(note->chord()->tick()); - s->setParent(note->chord()->segment()->measure()); + if (el) { + if (el->acceptDrop(this, pos, s)) { + dropData.element = s; + el->drop(dropData); } - else { - Rest* rest = (Rest*)el; - // s->setTick(rest->tick()); - s->setParent(rest->segment()->measure()); - } - score()->undoAddElement(s); } - else - score()->cmdAddBSymbol(s, pos, dragOffset); - event->acceptProposedAction(); score()->endCmd(); mscore->endCmd();