- if (selection.at(i)->parentItem() == 0 && (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET || selection.at(i)->type() == GROUPWIDGET)) {
- rectUnion = rectUnion.united(selection.at(i)->sceneBoundingRect());
- } else if (selection.at(i)->parentItem()) {
- rectUnion = rectUnion.united(selection.at(i)->parentItem()->sceneBoundingRect());
- }
+ if (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET) {
+ if (selection.at(i)->parentItem() && selection.at(i)->parentItem()->type() == GROUPWIDGET) {
+ AbstractGroupItem *it = static_cast <AbstractGroupItem *> (selection.at(i)->parentItem());
+ while (it->parentItem() && it->parentItem()->type() == GROUPWIDGET) {
+ it = static_cast <AbstractGroupItem *>(it->parentItem());
+ }
+ if (!it || it->isItemLocked()) continue;
+ groupsList.insert(it);
+ }
+ else {
+ AbstractClipItem *it = static_cast<AbstractClipItem *> (selection.at(i));
+ if (!it || it->isItemLocked()) continue;
+ itemsList.insert(selection.at(i));
+ }
+ }
+ }
+ if (itemsList.isEmpty() && groupsList.isEmpty()) return;
+ if (itemsList.count() == 1 && groupsList.isEmpty()) {
+ // only one item selected:
+ QSetIterator<QGraphicsItem *> it(itemsList);
+ m_dragItem = static_cast<AbstractClipItem *>(it.next());
+ m_dragItem->setSelected(true);
+ return;