summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/QtUI/Whiteboard/GView.cpp')
-rw-r--r--Swift/QtUI/Whiteboard/GView.cpp21
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) {