fix #19427, fix image drop to note
This commit is contained in:
parent
fed5fb2d9b
commit
bf15b8a90a
6 changed files with 8 additions and 60 deletions
|
@ -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<Icon*>(e)->iconType()) {
|
||||
|
|
|
@ -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<System*>* 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
|
||||
//---------------------------------------------------------
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in a new issue