fix #19427, fix image drop to note

This commit is contained in:
ws 2013-07-04 10:56:31 +02:00
parent fed5fb2d9b
commit bf15b8a90a
6 changed files with 8 additions and 60 deletions

View file

@ -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()) {

View file

@ -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
//---------------------------------------------------------

View file

@ -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());

View file

@ -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 &noteVal);

View file

@ -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 {

View file

@ -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();