return (int)(scenePos().y() / KdenliveSettings::trackheight());
}
+void AbstractGroupItem::setItemLocked(bool locked)
+{
+ if (locked) {
+ setSelected(false);
+ setFlag(QGraphicsItem::ItemIsMovable, false);
+ setFlag(QGraphicsItem::ItemIsSelectable, false);
+ } else {
+ setFlag(QGraphicsItem::ItemIsMovable, true);
+ setFlag(QGraphicsItem::ItemIsSelectable, true);
+ }
+}
+
+bool AbstractGroupItem::isItemLocked() const
+{
+ return !(flags() & (QGraphicsItem::ItemIsSelectable));
+}
+
CustomTrackScene* AbstractGroupItem::projectScene()
{
if (scene()) return static_cast <CustomTrackScene*>(scene());
int track() const;
QPainterPath clipGroupShape(QPointF) const;
QPainterPath transitionGroupShape(QPointF) const;
-// ItemInfo info() const;
+ void setItemLocked(bool locked);
+ bool isItemLocked() const;
+ // ItemInfo info() const;
protected:
virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
if (event->modifiers() == Qt::ControlModifier) {
// Ctrl + click, select all items on track after click position
int track = (int)(mapToScene(m_clickEvent).y() / m_tracksHeight);
+ if (m_document->trackInfoAt(m_document->tracksCount() - track - 1).isLocked) {
+ // Cannot use spacer on locked track
+ emit displayMessage(i18n("Cannot use spacer in a locked track"), ErrorMessage);
+ return;
+ }
+
QRectF rect(mapToScene(m_clickEvent).x(), track * m_tracksHeight + m_tracksHeight / 2, sceneRect().width() - mapToScene(m_clickEvent).x(), m_tracksHeight / 2 - 2);
bool isOk;
for (int i = 0; i < selection.count(); i++) {
if (selection.at(i)->parentItem() == 0 && (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET)) {
AbstractClipItem *item = static_cast<AbstractClipItem *>(selection.at(i));
+ if (item->isItemLocked()) continue;
offsetList.append(item->startPos());
offsetList.append(item->endPos());
m_selectionGroup->addToGroup(selection.at(i));
selection.at(i)->setFlag(QGraphicsItem::ItemIsMovable, false);
} else if (selection.at(i)->parentItem() == 0 && selection.at(i)->type() == GROUPWIDGET) {
+ if (static_cast<AbstractGroupItem *>(selection.at(i))->isItemLocked()) continue;
QList<QGraphicsItem *> children = selection.at(i)->childItems();
for (int j = 0; j < children.count(); j++) {
AbstractClipItem *item = static_cast<AbstractClipItem *>(children.at(j));
m_selectionGroup->addToGroup(selection.at(i));
selection.at(i)->setFlag(QGraphicsItem::ItemIsMovable, false);
} else if (selection.at(i)->parentItem()) {
+ if (static_cast<AbstractGroupItem *>(selection.at(i)->parentItem())->isItemLocked()) continue;
m_selectionGroup->addToGroup(selection.at(i)->parentItem());
selection.at(i)->parentItem()->setFlag(QGraphicsItem::ItemIsMovable, false);
}