+ if (selection.at(i)->type() == GROUPWIDGET && (AbstractGroupItem *)selection.at(i) != m_selectionGroup) {
+ if (selection.at(i)->parentItem() && m_selectionGroup) {
+ selection.removeAll((QGraphicsItem*)m_selectionGroup);
+ resetSelectionGroup();
+ }
+
+ bool changeGroupLock = true;
+ bool hasClipOnTrack = false;
+ QList <QGraphicsItem *> children = selection.at(i)->childItems();
+ for (int j = 0; j < children.count(); ++j) {
+ if (children.at(j)->isSelected()) {
+ if (children.at(j)->type() == AVWIDGET)
+ emit clipItemSelected(NULL);
+ else if (children.at(j)->type() == TRANSITIONWIDGET)
+ emit transitionItemSelected(NULL);
+ else
+ continue;
+ }
+
+ AbstractClipItem * child = static_cast <AbstractClipItem *>(children.at(j));
+ if (child == m_dragItem)
+ m_dragItem = NULL;
+
+ // only unlock group, if it is not locked by another track too
+ if (!lock && child->track() != ix && m_document->trackInfoAt(m_document->tracksCount() - child->track() - 1).isLocked)
+ changeGroupLock = false;
+
+ // only (un-)lock if at least one clip is on the track
+ if (child->track() == ix)
+ hasClipOnTrack = true;
+ }
+ if (changeGroupLock && hasClipOnTrack)
+ ((AbstractGroupItem*)selection.at(i))->setItemLocked(lock);
+ } else if((selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET)) {
+ if (selection.at(i)->parentItem()) {
+ if (selection.at(i)->parentItem() == m_selectionGroup) {
+ selection.removeAll((QGraphicsItem*)m_selectionGroup);
+ resetSelectionGroup();
+ } else {
+ // groups are handled separately
+ continue;
+ }
+ }
+
+ if (selection.at(i)->isSelected()) {
+ if (selection.at(i)->type() == AVWIDGET)
+ emit clipItemSelected(NULL);
+ else
+ emit transitionItemSelected(NULL);
+ }
+ clip = static_cast <AbstractClipItem *>(selection.at(i));
+ clip->setItemLocked(lock);
+ if (clip == m_dragItem)
+ m_dragItem = NULL;