diff options
Diffstat (limited to 'Swift/QtUI/Whiteboard/GView.cpp')
-rw-r--r-- | Swift/QtUI/Whiteboard/GView.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/Swift/QtUI/Whiteboard/GView.cpp b/Swift/QtUI/Whiteboard/GView.cpp index 4e7e006..1e77b62 100644 --- a/Swift/QtUI/Whiteboard/GView.cpp +++ b/Swift/QtUI/Whiteboard/GView.cpp @@ -92,6 +92,14 @@ namespace Swift { return itemsMap_.value(id); } + void GView::deleteItem(QString id) { + QGraphicsItem* item = itemsMap_.value(id); + items_.removeOne(item); + itemsMap_.remove(id); + scene()->removeItem(item); + delete item; + } + QString GView::getNewID() { return idPrefix + P2QSTRING(idGenerator.generateID()); } @@ -237,8 +245,17 @@ namespace Swift { if (!list.isEmpty()) { QGraphicsItem* item = scene()->items(rect).first(); - scene()->removeItem(item); - delete item; + QString id = item->data(100).toString(); + deleteItem(id); + int i = 1; + QList<QGraphicsItem*>::const_iterator it; + for (it = items_.begin(); it != items_.end(); ++it) { + if (*it == item) { + break; + } + i++; + } + itemDeleted(id, i); } } else if (mode == Circle) { |