p.setX(size.section('x', 0, 0).toInt());
p.setY(size.section('x', 1, 1).toInt());
}
- emit transitionItemSelected(item, p, true);
+ emit transitionItemSelected(item, getPreviousVideoTrack(info.track), p, true);
}
m_document->setModified(true);
}
m_document->renderer()->mltDeleteTrack(m_document->tracksCount() - ix);
m_document->deleteTrack(m_document->tracksCount() - ix - 1);
- double startY = ix * m_tracksHeight + 1 + m_tracksHeight / 2;
+ double startY = ix * (m_tracksHeight + 1) + m_tracksHeight / 2;
QRectF r(0, startY, sceneRect().width(), sceneRect().height() - startY);
QList<QGraphicsItem *> selection = m_scene->items(r);
ClipItem *clip = static_cast <ClipItem *>(children.at(i));
clip->updateItem();
ItemInfo clipinfo = clip->info();
- kDebug() << "// CLIP TRK IS: " << clipinfo.track;
// We add a move clip command so that we get the correct producer for new track number
if (clip->clipType() == AV || clip->clipType() == AUDIO) {
Mlt::Producer *prod;
p.setX(size.section('x', 0, 0).toInt());
p.setY(size.section('x', 1, 1).toInt());
}
- emit transitionItemSelected(static_cast <Transition *>(m_dragItem), p);
+ emit transitionItemSelected(static_cast <Transition *>(m_dragItem), getPreviousVideoTrack(m_dragItem->track()), p);
} else emit transitionItemSelected(NULL);
if (m_operationMode != NONE && m_operationMode != MOVE) m_document->setModified(true);
m_operationMode = NONE;
KdenliveSettings::setSnaptopoints(snap);
item->updateTransitionEndTrack(getPreviousVideoTrack(end.track));
m_document->renderer()->mltMoveTransition(item->transitionTag(), m_document->tracksCount() - start.track, m_document->tracksCount() - end.track, item->transitionEndTrack(), start.startPos, start.endPos, end.startPos, end.endPos);
- if (m_dragItem && m_dragItem == item) emit transitionItemSelected(item);
+ if (m_dragItem && m_dragItem == item) {
+ QPoint p;
+ ClipItem *transitionClip = getClipItemAt(item->startPos(), item->track());
+ if (transitionClip && transitionClip->baseClip()) {
+ QString size = transitionClip->baseClip()->getProperty("frame_size");
+ p.setX(size.section('x', 0, 0).toInt());
+ p.setY(size.section('x', 1, 1).toInt());
+ }
+ emit transitionItemSelected(item, getPreviousVideoTrack(item->track()), p);
+ }
}
void CustomTrackView::resizeClip(const ItemInfo start, const ItemInfo end)
}
}
+ selection = m_scene->items();
new AddTrackCommand(this, ix, trackinfo, false, deleteTrack);
m_commandStack->push(deleteTrack);
}
void zoomOut();
void mousePosition(int);
void clipItemSelected(ClipItem*, int ix = -1);
- void transitionItemSelected(Transition*, QPoint p = QPoint(), bool update = false);
+ void transitionItemSelected(Transition*, int track = 0, QPoint p = QPoint(), bool update = false);
void activateDocumentMonitor();
void trackHeightChanged();
void displayMessage(const QString, MessageType);
#include <KLocale>
-EditTransitionCommand::EditTransitionCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, bool doIt) :
- QUndoCommand(),
+EditTransitionCommand::EditTransitionCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, bool doIt, QUndoCommand * parent) :
+ QUndoCommand(parent),
m_view(view),
m_track(track),
m_oldeffect(oldeffect),
class EditTransitionCommand : public QUndoCommand
{
public:
- EditTransitionCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, bool doIt);
+ EditTransitionCommand(CustomTrackView *view, const int track, GenTime pos, QDomElement oldeffect, QDomElement effect, bool doIt, QUndoCommand * parent = NULL);
virtual int id() const;
virtual bool mergeWith(const QUndoCommand * command);
delete m_activeDocument;
m_activeDocument = NULL;
m_effectStack->clear();
- m_transitionConfig->slotTransitionItemSelected(NULL, QPoint(), false);
+ m_transitionConfig->slotTransitionItemSelected(NULL, 0, QPoint(), false);
} else delete docToClose;
if (w == m_activeTimeline) {
delete m_activeTimeline;
disconnect(m_activeDocument, SIGNAL(deleteTimelineClip(const QString &)), m_activeTimeline, SLOT(slotDeleteClip(const QString &)));
disconnect(m_activeTimeline->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), m_effectStack, SLOT(slotClipItemSelected(ClipItem*, int)));
disconnect(m_activeTimeline->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), this, SLOT(slotActivateEffectStackView()));
- disconnect(m_activeTimeline, SIGNAL(transitionItemSelected(Transition*, QPoint, bool)), m_transitionConfig, SLOT(slotTransitionItemSelected(Transition*, QPoint, bool)));
- disconnect(m_activeTimeline, SIGNAL(transitionItemSelected(Transition*, QPoint, bool)), this, SLOT(slotActivateTransitionView(Transition *)));
+ disconnect(m_activeTimeline->projectView(), SIGNAL(transitionItemSelected(Transition*, int, QPoint, bool)), m_transitionConfig, SLOT(slotTransitionItemSelected(Transition*, int, QPoint, bool)));
+ disconnect(m_activeTimeline->projectView(), SIGNAL(transitionItemSelected(Transition*, int, QPoint, bool)), this, SLOT(slotActivateTransitionView(Transition *)));
disconnect(m_zoomSlider, SIGNAL(valueChanged(int)), m_activeTimeline, SLOT(slotChangeZoom(int)));
disconnect(m_activeTimeline->projectView(), SIGNAL(displayMessage(const QString&, MessageType)), m_messageLabel, SLOT(setMessage(const QString&, MessageType)));
disconnect(m_activeTimeline->projectView(), SIGNAL(showClipFrame(DocClipBase *, const int)), m_clipMonitor, SLOT(slotSetXml(DocClipBase *, const int)));
connect(trackView->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), m_effectStack, SLOT(slotClipItemSelected(ClipItem*, int)));
connect(trackView->projectView(), SIGNAL(clipItemSelected(ClipItem*, int)), this, SLOT(slotActivateEffectStackView()));
- connect(trackView, SIGNAL(transitionItemSelected(Transition*, QPoint, bool)), m_transitionConfig, SLOT(slotTransitionItemSelected(Transition*, QPoint, bool)));
- connect(trackView, SIGNAL(transitionItemSelected(Transition*, QPoint, bool)), this, SLOT(slotActivateTransitionView(Transition *)));
+ connect(trackView->projectView(), SIGNAL(transitionItemSelected(Transition*, int, QPoint, bool)), m_transitionConfig, SLOT(slotTransitionItemSelected(Transition*, int, QPoint, bool)));
+ connect(trackView->projectView(), SIGNAL(transitionItemSelected(Transition*, int, QPoint, bool)), this, SLOT(slotActivateTransitionView(Transition *)));
m_zoomSlider->setValue(doc->zoom());
connect(m_zoomSlider, SIGNAL(valueChanged(int)), trackView, SLOT(slotChangeZoom(int)));
connect(trackView->projectView(), SIGNAL(zoomIn()), this, SLOT(slotZoomIn()));
connect(m_trackview, SIGNAL(cursorMoved(int, int)), m_ruler, SLOT(slotCursorMoved(int, int)));
connect(m_trackview->horizontalScrollBar(), SIGNAL(valueChanged(int)), m_ruler, SLOT(slotMoveRuler(int)));
connect(m_trackview, SIGNAL(mousePosition(int)), this, SIGNAL(mousePosition(int)));
- connect(m_trackview, SIGNAL(transitionItemSelected(Transition*, QPoint, bool)), this, SLOT(slotTransitionItemSelected(Transition*, QPoint, bool)));
connect(m_trackview, SIGNAL(doTrackLock(int, bool)), this, SLOT(slotChangeTrackLock(int, bool)));
slotChangeZoom(m_doc->zoom());
m_ruler->setZone(p);
}
-void TrackView::slotTransitionItemSelected(Transition *t, QPoint p, bool update)
-{
- emit transitionItemSelected(t, p, update);
-}
-
void TrackView::setDuration(int dur)
{
m_trackview->setDuration(dur);
private slots:
void setCursorPos(int pos);
void moveCursorPos(int pos);
- void slotTransitionItemSelected(Transition*, QPoint p, bool update);
void slotRebuildTrackHeaders();
void slotChangeTrackLock(int ix, bool lock);
signals:
void mousePosition(int);
void cursorMoved();
- void transitionItemSelected(Transition*, QPoint, bool);
void zoneMoved(int, int);
void insertTrack(int);
void deleteTrack(int);
TransitionSettings::TransitionSettings(QWidget* parent) :
QWidget(parent),
m_usedTransition(NULL),
- m_tracksCount(0)
+ m_tracksCount(0),
+ m_autoTrackTransition(0)
{
m_ui.setupUi(this);
m_effectEdit = new EffectStackEdit(m_ui.frame);
m_effectEdit->updateParameter("force_track", "1");
emit transitionUpdated(m_usedTransition, oldxml);
} else {
+ ix = m_autoTrackTransition;
m_usedTransition->setForcedTrack(false, ix);
m_effectEdit->updateParameter("force_track", "0");
emit transitionUpdated(m_usedTransition, oldxml);
m_effectEdit->updateParameter("transition_btrack", QString::number(ix));
}
-void TransitionSettings::slotTransitionItemSelected(Transition* t, QPoint p, bool update)
+void TransitionSettings::slotTransitionItemSelected(Transition* t, int nextTrack, QPoint p, bool update)
{
setEnabled(t != NULL);
m_effectEdit->setFrameSize(p);
+ m_autoTrackTransition = nextTrack;
if (t == m_usedTransition) {
if (t == NULL) return;
if (update) {
GenTime m_transitionDuration;
GenTime m_transitionStart;
int m_tracksCount;
+ int m_autoTrackTransition;
public slots:
- void slotTransitionItemSelected(Transition*, QPoint, bool);
+ void slotTransitionItemSelected(Transition* t, int nextTrack, QPoint p, bool update);
void slotTransitionChanged(bool reinit = true, bool updateCurrent = false);
void slotUpdateEffectParams(const QDomElement&, const QDomElement&);