arrow crash fix. this fixes bug #0000001

This commit is contained in:
Max-Wilhelm Bruker 2010-09-08 21:11:30 +02:00
parent a5f678bc3d
commit 8fea71782d
5 changed files with 38 additions and 13 deletions

View file

@ -27,17 +27,30 @@ ArrowItem::ArrowItem(Player *_player, int _id, ArrowTarget *_startItem, ArrowTar
ArrowItem::~ArrowItem()
{
qDebug() << "ArrowItem destructor";
if (startItem)
}
void ArrowItem::delArrow()
{
if (startItem) {
startItem->removeArrowFrom(this);
startItem = 0;
}
if (targetItem) {
targetItem->setBeingPointedAt(false);
targetItem->removeArrowTo(this);
targetItem = 0;
}
player->removeArrow(this);
deleteLater();
}
void ArrowItem::updatePath()
{
if (!targetItem)
return;
QPointF endPoint = targetItem->mapToScene(QPointF(targetItem->boundingRect().width() / 2, targetItem->boundingRect().height() / 2));
updatePath(endPoint);
}
@ -196,7 +209,7 @@ void ArrowDragItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
));
}
}
deleteLater();
delArrow();
for (int i = 0; i < childArrows.size(); ++i)
childArrows[i]->mouseReleaseEvent(event);
@ -251,5 +264,6 @@ void ArrowAttachItem::mouseReleaseEvent(QGraphicsSceneMouseEvent * /*event*/)
targetCard->getId()
));
}
deleteLater();
delArrow();
}