From: <j-...@us...> - 2009-06-24 16:55:55
|
Revision: 3640 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3640&view=rev Author: j-b-m Date: 2009-06-24 16:55:46 +0000 (Wed, 24 Jun 2009) Log Message: ----------- Don't loose vertical position when using horizontal zoom Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-06-24 15:31:25 UTC (rev 3639) +++ trunk/kdenlive/src/customtrackview.cpp 2009-06-24 16:55:46 UTC (rev 3640) @@ -3736,17 +3736,14 @@ m_visualTip = NULL; delete m_animation; m_animation = NULL; - - //setSceneRect(0, 0, m_projectDuration + 100 * scaleFactor, sceneRect().height()); + double verticalPos = mapToScene(QPoint(0, viewport()->height() / 2)).y(); setMatrix(matrix); int diff = sceneRect().width() - m_projectDuration; if (diff * matrix.m11() < 50) { if (matrix.m11() < 0.4) setSceneRect(0, 0, (m_projectDuration + 100 / matrix.m11()), sceneRect().height()); else setSceneRect(0, 0, (m_projectDuration + 300), sceneRect().height()); } - - centerOn(QPointF(cursorPos(), m_tracksHeight)); - //verticalScrollBar()->setValue(vert);*/ + centerOn(QPointF(cursorPos(), verticalPos)); } void CustomTrackView::slotRefreshGuides() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-06-29 10:37:16
|
Revision: 3690 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3690&view=rev Author: j-b-m Date: 2009-06-29 10:37:12 +0000 (Mon, 29 Jun 2009) Log Message: ----------- Fix groups when adding / deleting a track: http://www.kdenlive.org/mantis/view.php?id=973 Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-06-29 09:22:41 UTC (rev 3689) +++ trunk/kdenlive/src/customtrackview.cpp 2009-06-29 10:37:12 UTC (rev 3690) @@ -1827,9 +1827,10 @@ m_selectionGroup = new AbstractGroupItem(m_document->fps()); scene()->addItem(m_selectionGroup); for (int i = 0; i < selection.count(); i++) { - if (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET) + if ((!selection.at(i)->parentItem()) && (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET || selection.at(i)->type() == GROUPWIDGET)) { m_selectionGroup->addToGroup(selection.at(i)); - selection.at(i)->setFlags(QGraphicsItem::ItemIsSelectable); + selection.at(i)->setFlags(QGraphicsItem::ItemIsSelectable); + } } // Move graphic items m_selectionGroup->translate(0, m_tracksHeight); @@ -1837,6 +1838,11 @@ // adjust track number QList<QGraphicsItem *> children = m_selectionGroup->childItems(); for (int i = 0; i < children.count(); i++) { + if (children.at(i)->type() == GROUPWIDGET) { + AbstractGroupItem *grp = static_cast<AbstractGroupItem*>(children.at(i)); + children << grp->childItems(); + continue; + } AbstractClipItem *item = static_cast <AbstractClipItem *>(children.at(i)); item->updateItem(); ItemInfo clipinfo = item->info(); @@ -1860,8 +1866,8 @@ } } resetSelectionGroup(false); + } - } int maxHeight = m_tracksHeight * m_document->tracksCount(); for (int i = 0; i < m_guides.count(); i++) { QLineF l = m_guides.at(i)->line(); @@ -1890,7 +1896,7 @@ m_selectionGroup = new AbstractGroupItem(m_document->fps()); scene()->addItem(m_selectionGroup); for (int i = 0; i < selection.count(); i++) { - if (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET) { + if ((!selection.at(i)->parentItem()) && (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET || selection.at(i)->type() == GROUPWIDGET)) { m_selectionGroup->addToGroup(selection.at(i)); selection.at(i)->setFlags(QGraphicsItem::ItemIsSelectable); } @@ -1903,6 +1909,11 @@ QList<QGraphicsItem *> children = m_selectionGroup->childItems(); //kDebug() << "// FOUND CLIPS TO MOVE: " << children.count(); for (int i = 0; i < children.count(); i++) { + if (children.at(i)->type() == GROUPWIDGET) { + AbstractGroupItem *grp = static_cast<AbstractGroupItem*>(children.at(i)); + children << grp->childItems(); + continue; + } if (children.at(i)->type() == AVWIDGET) { ClipItem *clip = static_cast <ClipItem *>(children.at(i)); clip->updateItem(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-07-29 16:55:50
|
Revision: 3777 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3777&view=rev Author: j-b-m Date: 2009-07-29 16:55:38 +0000 (Wed, 29 Jul 2009) Log Message: ----------- re-add transition for transparent items Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-07-29 16:45:08 UTC (rev 3776) +++ trunk/kdenlive/src/customtrackview.cpp 2009-07-29 16:55:38 UTC (rev 3777) @@ -1835,11 +1835,11 @@ bool isLocked = m_document->trackInfoAt(tracknumber).isLocked; if (isLocked) item->setItemLocked(true); - /*if (item->baseClip()->isTransparent() && getTransitionItemAtStart(info.startPos, info.track) == NULL) { + if (item->baseClip()->isTransparent() && getTransitionItemAtStart(info.startPos, info.track) == NULL) { // add transparency transition - QDomElement trans = MainWindow::transitions.getEffectByTag("composite", "composite").cloneNode().toElement(); + QDomElement trans = MainWindow::transitions.getEffectByTag("composite", "composite").cloneNode().toElement(); new AddTransitionCommand(this, info, getPreviousVideoTrack(info.track), trans, false, true, addCommand); - }*/ + } info.track = m_document->tracksCount() - item->track(); m_document->renderer()->mltInsertClip(info, item->xml(), item->baseClip()->producer(item->track())); item->setSelected(true); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-07-30 15:36:41
|
Revision: 3784 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3784&view=rev Author: j-b-m Date: 2009-07-30 15:36:32 +0000 (Thu, 30 Jul 2009) Log Message: ----------- Fix snaping for spacer tool: http://kdenlive.org/mantis/view.php?id=1064 Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-07-29 23:43:38 UTC (rev 3783) +++ trunk/kdenlive/src/customtrackview.cpp 2009-07-30 15:36:32 UTC (rev 3784) @@ -732,11 +732,37 @@ kDebug() << "SELELCTING ELEMENTS WITHIN =" << event->pos().x() << "/" << 1 << ", " << mapFromScene(sceneRect().width(), 0).x() - event->pos().x() << "/" << sceneRect().height(); } + QList <GenTime> offsetList; for (int i = 0; i < selection.count(); i++) { - if (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET || selection.at(i)->type() == GROUPWIDGET) { + if (selection.at(i)->type() == AVWIDGET || selection.at(i)->type() == TRANSITIONWIDGET) { + AbstractClipItem *item = static_cast<AbstractClipItem *>(selection.at(i)); + offsetList.append(item->startPos()); + offsetList.append(item->endPos()); selection.at(i)->setSelected(true); } + if (selection.at(i)->type() == GROUPWIDGET) { + QList<QGraphicsItem *> children = selection.at(i)->childItems(); + for (int j = 0; j < children.count(); j++) { + AbstractClipItem *item = static_cast<AbstractClipItem *>(children.at(j)); + offsetList.append(item->startPos()); + offsetList.append(item->endPos()); + } + selection.at(i)->setSelected(true); + } } + + if (!offsetList.isEmpty()) { + qSort(offsetList); + QList <GenTime> cleandOffsetList; + GenTime startOffset = offsetList.takeFirst(); + for (int k = 0; k < offsetList.size(); k++) { + GenTime newoffset = offsetList.at(k) - startOffset; + if (newoffset != GenTime() && !cleandOffsetList.contains(newoffset)) { + cleandOffsetList.append(newoffset); + } + } + updateSnapPoints(NULL, cleandOffsetList, true); + } groupSelectedItems(true); m_operationMode = SPACER; } else setCursorPos((int)(mapToScene(event->x(), 0).x())); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-07-30 21:01:53
|
Revision: 3789 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3789&view=rev Author: j-b-m Date: 2009-07-30 21:01:46 +0000 (Thu, 30 Jul 2009) Log Message: ----------- Fix guides updating issue: http://kdenlive.org/mantis/view.php?id=1061 Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-07-30 20:46:57 UTC (rev 3788) +++ trunk/kdenlive/src/customtrackview.cpp 2009-07-30 21:01:46 UTC (rev 3789) @@ -74,6 +74,12 @@ #include <QInputDialog> +bool sortGuidesList(const Guide *g1 , const Guide *g2) +{ + return (*g1).position() < (*g2).position(); +} + + //TODO: // disable animation if user asked it in KDE's global settings // http://lists.kde.org/?l=kde-commits&m=120398724717624&w=2 @@ -2348,6 +2354,7 @@ EditGuideCommand *command = new EditGuideCommand(this, m_dragGuide->position(), m_dragGuide->label(), newPos, m_dragGuide->label(), false); m_commandStack->push(command); m_dragGuide->updateGuide(GenTime(m_dragGuide->pos().x(), m_document->fps())); + qSort(m_guides.begin(), m_guides.end(), sortGuidesList); m_document->syncGuides(m_guides); } m_dragGuide = NULL; @@ -3695,11 +3702,6 @@ viewport()->update(); } -bool sortGuidesList(const Guide *g1 , const Guide *g2) -{ - return (*g1).position() < (*g2).position(); -} - int CustomTrackView::hasGuide(int pos, int offset) { for (int i = 0; i < m_guides.count(); i++) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-08-16 07:03:38
|
Revision: 3825 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3825&view=rev Author: j-b-m Date: 2009-08-16 07:03:32 +0000 (Sun, 16 Aug 2009) Log Message: ----------- Fix qtimeline warning Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-08-16 06:32:53 UTC (rev 3824) +++ trunk/kdenlive/src/customtrackview.cpp 2009-08-16 07:03:32 UTC (rev 3825) @@ -355,13 +355,14 @@ pos = (br.bottom() - pos) * maxh; m_dragItem->updateKeyFramePos(keyFramePos, pos); } - + m_animationTimer->stop(); delete m_animation; m_animation = NULL; delete m_visualTip; m_visualTip = NULL; return; } else if (m_operationMode == MOVEGUIDE) { + m_animationTimer->stop(); delete m_animation; m_animation = NULL; delete m_visualTip; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-08-16 10:11:11
|
Revision: 3827 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3827&view=rev Author: j-b-m Date: 2009-08-16 10:11:02 +0000 (Sun, 16 Aug 2009) Log Message: ----------- Fix group selection & group snap points Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-08-16 08:10:16 UTC (rev 3826) +++ trunk/kdenlive/src/customtrackview.cpp 2009-08-16 10:11:02 UTC (rev 3827) @@ -594,7 +594,6 @@ // virtual void CustomTrackView::mousePressEvent(QMouseEvent * event) { - //kDebug() << "mousePressEvent STARTED"; setFocus(Qt::MouseFocusReason); m_menuPosition = QPoint(); @@ -607,6 +606,7 @@ } if (event->modifiers() & Qt::ShiftModifier) { + // Rectangle selection setDragMode(QGraphicsView::RubberBandDrag); if (!(event->modifiers() & Qt::ControlModifier)) { resetSelectionGroup(); @@ -633,6 +633,7 @@ QList<QGraphicsItem *> collisionList = items(m_clickEvent); if (event->modifiers() == Qt::ControlModifier && m_tool != SPACERTOOL && collisionList.count() == 0) { + // Pressing Ctrl + left mouse button in an empty area scrolls the timeline setDragMode(QGraphicsView::ScrollHandDrag); QGraphicsView::mousePressEvent(event); m_blockRefresh = false; @@ -806,10 +807,36 @@ return; } - if (dragGroup == NULL) updateSnapPoints(m_dragItem); + bool itemSelected = false; + if (m_dragItem->isSelected()) itemSelected = true; + else if (m_dragItem->parentItem() && m_dragItem->parentItem()->isSelected()) itemSelected = true; + else if (dragGroup && dragGroup->isSelected()) itemSelected = true; + + if (event->modifiers() == Qt::ControlModifier || itemSelected == false) { + if (event->modifiers() != Qt::ControlModifier) { + m_scene->clearSelection(); + resetSelectionGroup(false); + } else resetSelectionGroup(); + dragGroup = NULL; + if (m_dragItem->parentItem() && m_dragItem->parentItem()->type() == GROUPWIDGET) { + //kDebug()<<"// KLIK FOUND GRP: "<<m_dragItem->sceneBoundingRect(); + dragGroup = static_cast <AbstractGroupItem *>(m_dragItem->parentItem()); + } + bool selected = !m_dragItem->isSelected(); + if (dragGroup) dragGroup->setSelected(selected); + else m_dragItem->setSelected(selected); + + groupSelectedItems(); + ClipItem *clip = static_cast <ClipItem *>(m_dragItem); + updateClipTypeActions(dragGroup == NULL ? clip : NULL); + m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1); + } + + // Update snap points + if (m_selectionGroup == NULL) updateSnapPoints(m_dragItem); else { QList <GenTime> offsetList; - QList<QGraphicsItem *> children = dragGroup->childItems(); + QList<QGraphicsItem *> children = m_selectionGroup->childItems(); for (int i = 0; i < children.count(); i++) { if (children.at(i)->type() == AVWIDGET || children.at(i)->type() == TRANSITIONWIDGET) { AbstractClipItem *item = static_cast <AbstractClipItem *>(children.at(i)); @@ -831,31 +858,8 @@ } } - bool itemSelected = false; - if (m_dragItem->isSelected()) itemSelected = true; - else if (m_dragItem->parentItem() && m_dragItem->parentItem()->isSelected()) itemSelected = true; - else if (dragGroup && dragGroup->isSelected()) itemSelected = true; - if (event->modifiers() == Qt::ControlModifier || itemSelected == false) { - if (event->modifiers() != Qt::ControlModifier) m_scene->clearSelection(); - resetSelectionGroup(); - dragGroup = NULL; - if (m_dragItem->parentItem() && m_dragItem->parentItem()->type() == GROUPWIDGET) { - //kDebug()<<"// KLIK FOUND GRP: "<<m_dragItem->sceneBoundingRect(); - dragGroup = static_cast <AbstractGroupItem *>(m_dragItem->parentItem()); - } - bool selected = !m_dragItem->isSelected(); - if (dragGroup) dragGroup->setSelected(selected); - else m_dragItem->setSelected(selected); - - groupSelectedItems(); - ClipItem *clip = static_cast <ClipItem *>(m_dragItem); - updateClipTypeActions(dragGroup == NULL ? clip : NULL); - m_pasteEffectsAction->setEnabled(m_copiedItems.count() == 1); - } - if (collisionClip != NULL || m_dragItem == NULL) { if (m_dragItem && m_dragItem->type() == AVWIDGET && !m_dragItem->isItemLocked()) { - kDebug() << "//////// CLIP ITEM SELECTED, TRANSMITTING . . . . . . ."; ClipItem *selected = static_cast <ClipItem*>(m_dragItem); emit clipItemSelected(selected); } else emit clipItemSelected(NULL); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-08-26 15:58:11
|
Revision: 3837 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3837&view=rev Author: j-b-m Date: 2009-08-26 15:57:59 +0000 (Wed, 26 Aug 2009) Log Message: ----------- Don't forget to remove visual tips before deleting them, avoiding a complete repaint Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-08-26 15:42:40 UTC (rev 3836) +++ trunk/kdenlive/src/customtrackview.cpp 2009-08-26 15:57:59 UTC (rev 3837) @@ -360,6 +360,7 @@ pos = (br.bottom() - pos) * maxh; m_dragItem->updateKeyFramePos(keyFramePos, pos); } + scene()->removeItem(m_visualTip); m_animationTimer->stop(); delete m_animation; m_animation = NULL; @@ -367,6 +368,7 @@ m_visualTip = NULL; return; } else if (m_operationMode == MOVEGUIDE) { + scene()->removeItem(m_visualTip); m_animationTimer->stop(); delete m_animation; m_animation = NULL; @@ -421,6 +423,7 @@ return; } else { if (m_visualTip) { + scene()->removeItem(m_visualTip); m_animationTimer->stop(); delete m_animation; m_animation = NULL; @@ -577,6 +580,7 @@ setCursor(Qt::SplitHCursor); } else { if (m_visualTip) { + scene()->removeItem(m_visualTip); m_animationTimer->stop(); delete m_animation; m_animation = NULL; @@ -3873,6 +3877,7 @@ QMatrix matrix; matrix = matrix.scale(scaleFactor, verticalScale); m_scene->setScale(scaleFactor, verticalScale); + scene()->removeItem(m_visualTip); m_animationTimer->stop(); delete m_visualTip; m_visualTip = NULL; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-08-27 14:57:00
|
Revision: 3841 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3841&view=rev Author: j-b-m Date: 2009-08-27 14:56:47 +0000 (Thu, 27 Aug 2009) Log Message: ----------- Fix runtime warning on item removal Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-08-27 12:44:15 UTC (rev 3840) +++ trunk/kdenlive/src/customtrackview.cpp 2009-08-27 14:56:47 UTC (rev 3841) @@ -363,7 +363,7 @@ pos = (br.bottom() - pos) * maxh; m_dragItem->updateKeyFramePos(keyFramePos, pos); } - scene()->removeItem(m_visualTip); + if (m_visualTip) scene()->removeItem(m_visualTip); m_animationTimer->stop(); delete m_animation; m_animation = NULL; @@ -371,7 +371,7 @@ m_visualTip = NULL; return; } else if (m_operationMode == MOVEGUIDE) { - scene()->removeItem(m_visualTip); + if (m_visualTip) scene()->removeItem(m_visualTip); m_animationTimer->stop(); delete m_animation; m_animation = NULL; @@ -3880,7 +3880,7 @@ QMatrix matrix; matrix = matrix.scale(scaleFactor, verticalScale); m_scene->setScale(scaleFactor, verticalScale); - scene()->removeItem(m_visualTip); + if (m_visualTip) scene()->removeItem(m_visualTip); m_animationTimer->stop(); delete m_visualTip; m_visualTip = NULL; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-08-28 14:27:16
|
Revision: 3845 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3845&view=rev Author: j-b-m Date: 2009-08-28 14:27:09 +0000 (Fri, 28 Aug 2009) Log Message: ----------- Get rid of the display artifacts when using timeline rectangle selection Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-08-28 13:32:28 UTC (rev 3844) +++ trunk/kdenlive/src/customtrackview.cpp 2009-08-28 14:27:09 UTC (rev 3845) @@ -122,7 +122,7 @@ setAcceptDrops(true); setFrameShape(QFrame::NoFrame); setLineWidth(0); - + KdenliveSettings::setTrackheight(m_tracksHeight); m_animationTimer = new QTimeLine(800); m_animationTimer->setFrameRange(0, 5); @@ -133,13 +133,13 @@ m_tipPen.setColor(border); m_tipPen.setWidth(3); setContentsMargins(0, 0, 0, 0); - const int maxWidth = m_tracksHeight * m_document->tracksCount(); - setSceneRect(0, 0, sceneRect().width(), maxWidth); - verticalScrollBar()->setMaximum(maxWidth); - m_cursorLine = projectscene->addLine(0, 0, 0, maxWidth); + const int maxHeight = m_tracksHeight * m_document->tracksCount(); + setSceneRect(0, 0, sceneRect().width(), maxHeight); + verticalScrollBar()->setMaximum(maxHeight); + m_cursorLine = projectscene->addLine(0, 0, 0, maxHeight); m_cursorLine->setZValue(1000); /*QPen pen1; - pen1.setWidthF(1.0); + pen1.setWidthF(0); pen1.setCosmetic(true); m_cursorLine->setPen(pen1);*/ @@ -323,9 +323,10 @@ emit mousePosition(mappedXPos); if (event->buttons() & Qt::MidButton) return; - if (m_operationMode == RUBBERSELECTION || (event->modifiers() == Qt::ControlModifier && m_tool != SPACERTOOL)) { + if (dragMode() == QGraphicsView::RubberBandDrag || (event->modifiers() == Qt::ControlModifier && m_tool != SPACERTOOL)) { + event->setAccepted(true); + m_moveOpMode = NONE; QGraphicsView::mouseMoveEvent(event); - m_moveOpMode = NONE; return; } @@ -412,7 +413,7 @@ AbstractClipItem *clip = static_cast <AbstractClipItem*>(item); if (m_tool == RAZORTOOL) { // razor tool over a clip, display current frame in monitor - if (false && /*!m_blockRefresh && */item->type() == AVWIDGET) { + if (false && !m_blockRefresh && item->type() == AVWIDGET) { //TODO: solve crash when showing frame when moving razor over clip emit showClipFrame(((ClipItem *) item)->baseClip(), mappedXPos - (clip->startPos() - clip->cropStart()).frames(m_document->fps())); } @@ -619,14 +620,15 @@ if (event->modifiers() & Qt::ShiftModifier) { // Rectangle selection + setViewportUpdateMode(QGraphicsView::FullViewportUpdate); setDragMode(QGraphicsView::RubberBandDrag); if (!(event->modifiers() & Qt::ControlModifier)) { resetSelectionGroup(); scene()->clearSelection(); } - QGraphicsView::mousePressEvent(event); m_blockRefresh = false; m_operationMode = RUBBERSELECTION; + QGraphicsView::mousePressEvent(event); return; } @@ -880,7 +882,7 @@ } // If clicked item is selected, allow move - if (event->modifiers() != Qt::ControlModifier && m_operationMode == NONE/* && (m_dragItem->isSelected() || (dragGroup && dragGroup->isSelected()))*/) QGraphicsView::mousePressEvent(event); + if (event->modifiers() != Qt::ControlModifier && m_operationMode == NONE) QGraphicsView::mousePressEvent(event); m_clickPoint = QPoint((int)(mapToScene(event->pos()).x() - m_dragItem->startPos().frames(m_document->fps())), (int)(event->pos().y() - m_dragItem->pos().y())); m_operationMode = m_dragItem->operationMode(mapToScene(event->pos())); @@ -2374,6 +2376,7 @@ { if (m_moveOpMode == SEEK) m_moveOpMode = NONE; QGraphicsView::mouseReleaseEvent(event); + setViewportUpdateMode(QGraphicsView::MinimalViewportUpdate); if (m_scrollTimer.isActive()) m_scrollTimer.stop(); if (event->button() == Qt::MidButton) { return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-08-28 16:07:25
|
Revision: 3848 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3848&view=rev Author: j-b-m Date: 2009-08-28 16:07:12 +0000 (Fri, 28 Aug 2009) Log Message: ----------- Fix repaint issue when zoomed in and selecting a clip Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-08-28 15:51:25 UTC (rev 3847) +++ trunk/kdenlive/src/customtrackview.cpp 2009-08-28 16:07:12 UTC (rev 3848) @@ -836,8 +836,10 @@ if (event->modifiers() == Qt::ControlModifier || itemSelected == false) { if (event->modifiers() != Qt::ControlModifier) { + resetSelectionGroup(false); m_scene->clearSelection(); - resetSelectionGroup(false); + // A refresh seems necessary otherwise in zoomed mode, some clips disappear + viewport()->update(); } else resetSelectionGroup(); dragGroup = NULL; if (m_dragItem->parentItem() && m_dragItem->parentItem()->type() == GROUPWIDGET) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-08-28 16:23:35
|
Revision: 3849 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3849&view=rev Author: j-b-m Date: 2009-08-28 16:23:28 +0000 (Fri, 28 Aug 2009) Log Message: ----------- Fix scrolling issue on group move Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-08-28 16:07:12 UTC (rev 3848) +++ trunk/kdenlive/src/customtrackview.cpp 2009-08-28 16:23:28 UTC (rev 3849) @@ -2602,7 +2602,7 @@ items += items.at(i)->childItems(); } } - + m_document->renderer()->blockSignals(true); for (int i = 0; i < items.count(); i++) { if (items.at(i)->type() != AVWIDGET && items.at(i)->type() != TRANSITIONWIDGET) continue; AbstractClipItem *item = static_cast <AbstractClipItem *>(items.at(i)); @@ -2620,7 +2620,7 @@ m_document->renderer()->mltDeleteTransition(tr->transitionTag(), tr->transitionEndTrack(), m_document->tracksCount() - info.track, info.startPos, info.endPos, tr->toXML()); } } - + m_document->renderer()->blockSignals(false); for (int i = 0; i < items.count(); i++) { // re-add items in correct place if (items.at(i)->type() != AVWIDGET && items.at(i)->type() != TRANSITIONWIDGET) continue; @@ -3334,7 +3334,7 @@ kDebug() << "// GROUP MOV; OFFSET: " << offset.frames(25) << ", TK OFF: " << trackOffset;*/ resetSelectionGroup(); m_scene->clearSelection(); - + m_document->renderer()->blockSignals(true); for (int i = 0; i < startClip.count(); i++) { if (reverseMove) { startClip[i].startPos = startClip.at(i).startPos - offset; @@ -3362,6 +3362,7 @@ m_document->renderer()->mltDeleteTransition(tr->transitionTag(), tr->transitionEndTrack(), m_document->tracksCount() - startTransition.at(i).track, startTransition.at(i).startPos, startTransition.at(i).endPos, tr->toXML()); } else kDebug() << "//MISSING TRANSITION AT: " << startTransition.at(i).startPos.frames(25); } + m_document->renderer()->blockSignals(false); groupSelectedItems(true); if (m_selectionGroup) { bool snap = KdenliveSettings::snaptopoints(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-09-15 21:34:12
|
Revision: 3892 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3892&view=rev Author: j-b-m Date: 2009-09-15 21:34:04 +0000 (Tue, 15 Sep 2009) Log Message: ----------- fix compile warning Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-09-15 15:59:09 UTC (rev 3891) +++ trunk/kdenlive/src/customtrackview.cpp 2009-09-15 21:34:04 UTC (rev 3892) @@ -3076,11 +3076,11 @@ emit transitionItemSelected(NULL); } } - if (groupCount > 0 && (clipCount == transitionCount == 0)) + if (groupCount > 0 && clipCount == 0 && transitionCount == 0) deleteSelected->setText(i18np("Delete selected group", "Delete selected groups", groupCount)); - else if (clipCount > 0 && (groupCount == transitionCount == 0)) + else if (clipCount > 0 && groupCount == 0 && transitionCount == 0) deleteSelected->setText(i18np("Delete selected clip", "Delete selected clips", clipCount)); - else if (transitionCount > 0 && (groupCount == clipCount == 0)) + else if (transitionCount > 0 && groupCount == 0 && clipCount == 0) deleteSelected->setText(i18np("Delete selected transition", "Delete selected transitions", transitionCount)); else deleteSelected->setText(i18n("Delete selected items")); m_commandStack->push(deleteSelected); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-09-22 09:32:01
|
Revision: 3918 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3918&view=rev Author: j-b-m Date: 2009-09-22 09:31:55 +0000 (Tue, 22 Sep 2009) Log Message: ----------- Fix bug when dragging clip from clip monitor: http://kdenlive.org/mantis/view.php?id=1155 Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-09-22 09:31:16 UTC (rev 3917) +++ trunk/kdenlive/src/customtrackview.cpp 2009-09-22 09:31:55 UTC (rev 3918) @@ -1235,6 +1235,7 @@ // Check if clip can be inserted at that position ItemInfo pasteInfo = info; pasteInfo.startPos = GenTime((int)(framePos.x() + 0.5), m_document->fps()); + pasteInfo.endPos = pasteInfo.startPos + info.endPos; pasteInfo.track = (int)(framePos.y() / m_tracksHeight); if (!canBePastedTo(pasteInfo, AVWIDGET)) { return true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-09-22 18:06:49
|
Revision: 3924 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3924&view=rev Author: j-b-m Date: 2009-09-22 18:06:32 +0000 (Tue, 22 Sep 2009) Log Message: ----------- Fix timeline corruption when using Spacer tool + Ctrl on a track with a group Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-09-22 17:26:31 UTC (rev 3923) +++ trunk/kdenlive/src/customtrackview.cpp 2009-09-22 18:06:32 UTC (rev 3924) @@ -759,6 +759,17 @@ // Ctrl + click, select all items on track after click position int track = (int)(mapToScene(m_clickEvent).y() / m_tracksHeight); selection = items(m_clickEvent.x(), track * m_tracksHeight + m_tracksHeight / 2, mapFromScene(sceneRect().width(), 0).x() - m_clickEvent.x(), m_tracksHeight / 2 - 2); + int maxHeight = m_tracksHeight * 1.5; + for (int i = 0; i < selection.count(); i++) { + // Check that we don't try to move a group with clips on other tracks + if (selection.at(i)->type() == GROUPWIDGET && (selection.at(i)->boundingRect().height() >= maxHeight)) { + emit displayMessage(i18n("Cannot use spacer in a track with a group"), ErrorMessage); + return; + } else if (selection.at(i)->parentItem() && (selection.at(i)->parentItem()->boundingRect().height() >= maxHeight)) { + emit displayMessage(i18n("Cannot use spacer in a track with a group"), ErrorMessage); + return; + } + } kDebug() << "SPACER TOOL + CTRL, SELECTING ALL CLIPS ON TRACK " << track << " WITH SELECTION RECT " << m_clickEvent.x() << "/" << track * m_tracksHeight + 1 << "; " << mapFromScene(sceneRect().width(), 0).x() - m_clickEvent.x() << "/" << m_tracksHeight - 2; } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-09-26 21:23:01
|
Revision: 3941 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3941&view=rev Author: j-b-m Date: 2009-09-26 21:22:55 +0000 (Sat, 26 Sep 2009) Log Message: ----------- Fix fade effects when changing clip speed Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-09-26 21:20:55 UTC (rev 3940) +++ trunk/kdenlive/src/customtrackview.cpp 2009-09-26 21:22:55 UTC (rev 3941) @@ -3150,6 +3150,7 @@ item->updateRectGeometry(); if (item->cropDuration().frames(m_document->fps()) > endPos) item->AbstractClipItem::resizeEnd(info.startPos.frames(m_document->fps()) + endPos, speed); + updateClipFade(item); setDocumentModified(); } else emit displayMessage(i18n("Invalid clip"), ErrorMessage); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-09-27 10:40:24
|
Revision: 3947 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3947&view=rev Author: j-b-m Date: 2009-09-27 10:40:16 +0000 (Sun, 27 Sep 2009) Log Message: ----------- Fix disabling speed effect not undoable Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-09-27 10:33:18 UTC (rev 3946) +++ trunk/kdenlive/src/customtrackview.cpp 2009-09-27 10:40:16 UTC (rev 3947) @@ -1535,18 +1535,21 @@ { ClipItem *clip = getClipItemAt((int)pos.frames(m_document->fps()), m_document->tracksCount() - track); QDomElement effect = insertedEffect.cloneNode().toElement(); - kDebug()<<"UPDATE EFFECT, DISAB: "<<effect.attribute("disabled"); if (clip) { // Special case: speed effect if (effect.attribute("id") == "speed") { ItemInfo info = clip->info(); - double speed = EffectsList::parameter(effect, "speed").toDouble() / 100.0; - int strobe = EffectsList::parameter(effect, "strobe").toInt(); - if (strobe == 0) strobe = 1; - doChangeClipSpeed(info, speed, clip->speed(), strobe, clip->baseClip()->getId()); + if (effect.attribute("disabled") == "1") doChangeClipSpeed(info, 1.0, clip->speed(), 1, clip->baseClip()->getId()); + else { + double speed = EffectsList::parameter(effect, "speed").toDouble() / 100.0; + int strobe = EffectsList::parameter(effect, "strobe").toInt(); + if (strobe == 0) strobe = 1; + doChangeClipSpeed(info, speed, clip->speed(), strobe, clip->baseClip()->getId()); + } clip->setEffectAt(ix, effect); if (ix == clip->selectedEffectIndex()) { clip->setSelectedEffect(ix); + if (!triggeredByUser) emit clipItemSelected(clip, ix); } return; } @@ -1611,20 +1614,7 @@ { QDomElement effect = clip->effectAt(effectPos); QDomElement oldEffect = effect.cloneNode().toElement(); - if (effect.attribute("id") == "speed") { - if (clip) { - ItemInfo info = clip->info(); - effect.setAttribute("disabled", (int) disable); - if (disable) doChangeClipSpeed(info, 1.0, clip->speed(), 1, clip->baseClip()->getId()); - else { - double speed = EffectsList::parameter(effect, "speed").toDouble() / 100.0; - int strobe = EffectsList::parameter(effect, "strobe").toInt(); - if (strobe == 0) strobe = 1; - doChangeClipSpeed(info, speed, 1.0, strobe, clip->baseClip()->getId()); - } - return; - } - } + effect.setAttribute("disabled", (int) disable); EditEffectCommand *command = new EditEffectCommand(this, m_document->tracksCount() - clip->track(), clip->startPos(), oldEffect, effect, effectPos, true); m_commandStack->push(command); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-09-27 12:10:04
|
Revision: 3949 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3949&view=rev Author: j-b-m Date: 2009-09-27 12:09:54 +0000 (Sun, 27 Sep 2009) Log Message: ----------- spacer should not go below zero Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-09-27 12:07:50 UTC (rev 3948) +++ trunk/kdenlive/src/customtrackview.cpp 2009-09-27 12:09:54 UTC (rev 3949) @@ -386,7 +386,7 @@ } else if (m_operationMode == SPACER && move && m_selectionGroup) { // spacer tool int mappedClick = (int)(mapToScene(m_clickEvent).x() + 0.5); - + if (snappedPos < 0) snappedPos = 0; // Make sure there is no collision QList<QGraphicsItem *> children = m_selectionGroup->childItems(); QPainterPath shape = m_selectionGroup->clipGroupShape(QPointF(snappedPos - m_selectionGroup->sceneBoundingRect().left(), 0)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-09-27 12:37:44
|
Revision: 3950 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3950&view=rev Author: j-b-m Date: 2009-09-27 12:22:21 +0000 (Sun, 27 Sep 2009) Log Message: ----------- Fix corruption when adding a transition to an existing group Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-09-27 12:09:54 UTC (rev 3949) +++ trunk/kdenlive/src/customtrackview.cpp 2009-09-27 12:22:21 UTC (rev 3950) @@ -1055,6 +1055,9 @@ 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 (force || selection.count() > 1) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-10-02 11:34:30
|
Revision: 3978 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3978&view=rev Author: j-b-m Date: 2009-10-02 11:34:19 +0000 (Fri, 02 Oct 2009) Log Message: ----------- Fix timeline corruption when using 'I' or 'O' to set in / out point of a clip when cursor is outside clip Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-10-01 21:52:54 UTC (rev 3977) +++ trunk/kdenlive/src/customtrackview.cpp 2009-10-02 11:34:19 UTC (rev 3978) @@ -4476,7 +4476,7 @@ ItemInfo startInfo = clip->info(); ItemInfo endInfo = startInfo; endInfo.startPos = GenTime(m_cursorPos, m_document->fps()); - if (endInfo.startPos >= startInfo.endPos) { + if (endInfo.startPos >= startInfo.endPos || endInfo.startPos < startInfo.startPos - startInfo.cropStart) { // Check for invalid resize emit displayMessage(i18n("Invalid action"), ErrorMessage); return; @@ -4507,7 +4507,7 @@ ItemInfo startInfo = clip->info(); ItemInfo endInfo = clip->info(); endInfo.endPos = GenTime(m_cursorPos, m_document->fps()); - if (endInfo.endPos <= startInfo.startPos) { + if (endInfo.endPos <= startInfo.startPos || endInfo.endPos > startInfo.startPos + clip->maxDuration() - startInfo.cropStart) { // Check for invalid resize emit displayMessage(i18n("Invalid action"), ErrorMessage); return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-10-05 07:37:43
|
Revision: 3996 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3996&view=rev Author: j-b-m Date: 2009-10-05 07:37:33 +0000 (Mon, 05 Oct 2009) Log Message: ----------- Fix error in copy / paste transition Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-10-04 00:14:30 UTC (rev 3995) +++ trunk/kdenlive/src/customtrackview.cpp 2009-10-05 07:37:33 UTC (rev 3996) @@ -3669,6 +3669,7 @@ emit transitionItemSelected(item, getPreviousVideoTrack(item->track()), p); } if (m_refresh) m_document->renderer()->doRefresh(); + setDocumentModified(); } void CustomTrackView::resizeClip(const ItemInfo start, const ItemInfo end, bool dontWorry) @@ -3718,6 +3719,7 @@ } m_document->renderer()->doRefresh(); KdenliveSettings::setSnaptopoints(snap); + setDocumentModified(); } void CustomTrackView::updatePositionEffects(ClipItem * item, ItemInfo info) @@ -4368,10 +4370,13 @@ info.startPos = tr->startPos() + offset; info.endPos = tr->endPos() + offset; info.track = tr->track() + trackOffset; + int transitionEndTrack; + if (tr->isAutomatic()) transitionEndTrack = getPreviousVideoTrack(info.track); + else transitionEndTrack = tr->transitionEndTrack(); if (canBePastedTo(info, TRANSITIONWIDGET)) { if (info.startPos >= info.endPos) { emit displayMessage(i18n("Invalid transition"), ErrorMessage); - } else new AddTransitionCommand(this, info, tr->transitionEndTrack() + trackOffset, tr->toXML(), false, true, pasteClips); + } else new AddTransitionCommand(this, info, transitionEndTrack, tr->toXML(), false, true, pasteClips); } else emit displayMessage(i18n("Cannot paste transition to selected place"), ErrorMessage); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-10-05 07:48:01
|
Revision: 3997 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3997&view=rev Author: j-b-m Date: 2009-10-05 07:47:52 +0000 (Mon, 05 Oct 2009) Log Message: ----------- Fix default transition duration for small clips Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-10-05 07:37:33 UTC (rev 3996) +++ trunk/kdenlive/src/customtrackview.cpp 2009-10-05 07:47:52 UTC (rev 3997) @@ -958,7 +958,11 @@ if (transitiontrack != 0) transitionClip = getClipItemAt((int) info.startPos.frames(m_document->fps()), m_document->tracksCount() - transitiontrack); if (transitionClip && transitionClip->endPos() < m_dragItem->endPos()) { info.endPos = transitionClip->endPos(); - } else info.endPos = info.startPos + GenTime(65, m_document->fps()); + } else { + GenTime transitionDuration(65, m_document->fps()); + if (m_dragItem->cropDuration() < transitionDuration) info.endPos = m_dragItem->endPos(); + else info.endPos = info.startPos + transitionDuration; + } if (info.endPos == info.startPos) info.endPos = info.startPos + GenTime(65, m_document->fps()); // Check there is no other transition at that place double startY = info.track * m_tracksHeight + 1 + m_tracksHeight / 2; @@ -984,7 +988,11 @@ if (transitiontrack != 0) transitionClip = getClipItemAt((int) info.endPos.frames(m_document->fps()), m_document->tracksCount() - transitiontrack); if (transitionClip && transitionClip->startPos() > m_dragItem->startPos()) { info.startPos = transitionClip->startPos(); - } else info.startPos = info.endPos - GenTime(65, m_document->fps()); + } else { + GenTime transitionDuration(65, m_document->fps()); + if (m_dragItem->cropDuration() < transitionDuration) info.startPos = m_dragItem->startPos(); + else info.startPos = info.endPos - transitionDuration; + } if (info.endPos == info.startPos) info.startPos = info.endPos - GenTime(65, m_document->fps()); QDomElement transition = MainWindow::transitions.getEffectByTag("luma", "dissolve").cloneNode().toElement(); EffectsList::setParameter(transition, "reverse", "1"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-10-05 14:38:44
|
Revision: 4000 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=4000&view=rev Author: j-b-m Date: 2009-10-05 14:38:36 +0000 (Mon, 05 Oct 2009) Log Message: ----------- Fix corruption when moving a clip with 2 attached transitions Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-10-05 09:11:09 UTC (rev 3999) +++ trunk/kdenlive/src/customtrackview.cpp 2009-10-05 14:38:36 UTC (rev 4000) @@ -2608,23 +2608,27 @@ moveCommand->setText(i18n("Move clip")); new MoveClipCommand(this, m_dragItemInfo, info, false, moveCommand); // Also move automatic transitions (on lower track) - Transition *tr = getTransitionItemAtStart(m_dragItemInfo.startPos, m_dragItemInfo.track); - if (tr && tr->isAutomatic()) { - ItemInfo trInfo = tr->info(); - ItemInfo newTrInfo = trInfo; - newTrInfo.track = info.track; - newTrInfo.startPos = m_dragItem->startPos(); - if (m_dragItemInfo.track == info.track && !item->baseClip()->isTransparent() && getClipItemAtEnd(newTrInfo.endPos, m_document->tracksCount() - tr->transitionEndTrack())) { + Transition *startTransition = getTransitionItemAtStart(m_dragItemInfo.startPos, m_dragItemInfo.track); + ItemInfo startTrInfo; + ItemInfo newStartTrInfo; + bool moveStartTrans = false; + bool moveEndTrans = false; + if (startTransition && startTransition->isAutomatic()) { + startTrInfo = startTransition->info(); + newStartTrInfo = startTrInfo; + newStartTrInfo.track = info.track; + newStartTrInfo.startPos = info.startPos; + if (m_dragItemInfo.track == info.track && !item->baseClip()->isTransparent() && getClipItemAtEnd(newStartTrInfo.endPos, m_document->tracksCount() - startTransition->transitionEndTrack())) { // transition end should stay the same } else { // transition end should be adjusted to clip - newTrInfo.endPos = newTrInfo.endPos + (newTrInfo.startPos - trInfo.startPos); + newStartTrInfo.endPos = newStartTrInfo.endPos + (newStartTrInfo.startPos - startTrInfo.startPos); } - if (newTrInfo.startPos < newTrInfo.endPos) new MoveTransitionCommand(this, trInfo, newTrInfo, true, moveCommand); + if (newStartTrInfo.startPos < newStartTrInfo.endPos) moveStartTrans = true; } - if (tr == NULL || tr->endPos() < m_dragItemInfo.endPos) { + if (startTransition == NULL || startTransition->endPos() < m_dragItemInfo.endPos) { // Check if there is a transition at clip end - tr = getTransitionItemAtEnd(m_dragItemInfo.endPos, m_dragItemInfo.track); + Transition *tr = getTransitionItemAtEnd(m_dragItemInfo.endPos, m_dragItemInfo.track); if (tr && tr->isAutomatic()) { ItemInfo trInfo = tr->info(); ItemInfo newTrInfo = trInfo; @@ -2636,12 +2640,29 @@ // transition start should be moved newTrInfo.startPos = newTrInfo.startPos + (newTrInfo.endPos - trInfo.endPos); } - if (newTrInfo.startPos < newTrInfo.endPos) + if (newTrInfo.startPos < newTrInfo.endPos) { + moveEndTrans = true; + if (moveStartTrans) { + // we have to move both transitions, remove the start one so that there is no collision + new AddTransitionCommand(this, startTrInfo, startTransition->transitionEndTrack(), startTransition->toXML(), true, true, moveCommand); + } new MoveTransitionCommand(this, trInfo, newTrInfo, true, moveCommand); + if (moveStartTrans) { + // re-add transition in correct place + int transTrack = startTransition->transitionEndTrack(); + if (m_dragItemInfo.track != info.track && !startTransition->forcedTrack()) { + transTrack = getPreviousVideoTrack(info.track); + } + new AddTransitionCommand(this, newStartTrInfo, transTrack, startTransition->toXML(), false, true, moveCommand); + } + } } } + + if (moveStartTrans && !moveEndTrans) new MoveTransitionCommand(this, startTrInfo, newStartTrInfo, true, moveCommand); + // Also move automatic transitions (on upper track) - tr = getTransitionItemAtStart(m_dragItemInfo.startPos, m_dragItemInfo.track - 1); + Transition *tr = getTransitionItemAtStart(m_dragItemInfo.startPos, m_dragItemInfo.track - 1); if (m_dragItemInfo.track == info.track && tr && tr->isAutomatic() && (m_document->tracksCount() - tr->transitionEndTrack()) == m_dragItemInfo.track) { ItemInfo trInfo = tr->info(); ItemInfo newTrInfo = trInfo; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-10-05 18:10:05
|
Revision: 4004 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=4004&view=rev Author: j-b-m Date: 2009-10-05 18:09:50 +0000 (Mon, 05 Oct 2009) Log Message: ----------- Add video fade on clips without audio, not audio fade Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-10-05 17:35:35 UTC (rev 4003) +++ trunk/kdenlive/src/customtrackview.cpp 2009-10-05 18:09:50 UTC (rev 4004) @@ -367,20 +367,24 @@ pos = (br.bottom() - pos) * maxh; m_dragItem->updateKeyFramePos(keyFramePos, pos); } - if (m_visualTip) scene()->removeItem(m_visualTip); - m_animationTimer->stop(); - delete m_animation; - m_animation = NULL; - delete m_visualTip; - m_visualTip = NULL; + if (m_visualTip) { + scene()->removeItem(m_visualTip); + m_animationTimer->stop(); + delete m_animation; + m_animation = NULL; + delete m_visualTip; + m_visualTip = NULL; + } return; } else if (m_operationMode == MOVEGUIDE) { - if (m_visualTip) scene()->removeItem(m_visualTip); - m_animationTimer->stop(); - delete m_animation; - m_animation = NULL; - delete m_visualTip; - m_visualTip = NULL; + if (m_visualTip) { + scene()->removeItem(m_visualTip); + m_animationTimer->stop(); + delete m_animation; + m_animation = NULL; + delete m_visualTip; + m_visualTip = NULL; + } QGraphicsView::mouseMoveEvent(event); return; } else if (m_operationMode == SPACER && move && m_selectionGroup) { @@ -3001,6 +3005,7 @@ // resize fade in effect ClipItem * item = static_cast <ClipItem *>(m_dragItem); int ix = item->hasEffect("volume", "fadein"); + int ix2 = item->hasEffect("", "fade_from_black"); if (ix != -1) { QDomElement oldeffect = item->effectAt(ix); int start = item->cropStart().frames(m_document->fps()); @@ -3015,14 +3020,17 @@ slotUpdateClipEffect(item, effect, oldeffect, ix); emit clipItemSelected(item, ix); } - } else if (item->fadeIn() != 0 && item->hasEffect("", "fade_from_black") == -1) { - QDomElement effect = MainWindow::audioEffects.getEffectByTag("volume", "fadein").cloneNode().toElement(); + } else if (item->fadeIn() != 0 && ix2 == -1) { + QDomElement effect; + if (item->isVideoOnly() || (item->clipType() != AUDIO && item->clipType() != AV && item->clipType() != PLAYLIST)) { + // add video fade + effect = MainWindow::videoEffects.getEffectByTag("", "fade_from_black").cloneNode().toElement(); + } else effect = MainWindow::audioEffects.getEffectByTag("volume", "fadein").cloneNode().toElement(); EffectsList::setParameter(effect, "out", QString::number(item->fadeIn())); slotAddEffect(effect, m_dragItem->startPos(), m_dragItem->track()); } - ix = item->hasEffect("volume", "fade_from_black"); - if (ix != -1) { - QDomElement oldeffect = item->effectAt(ix); + if (ix2 != -1) { + QDomElement oldeffect = item->effectAt(ix2); int start = item->cropStart().frames(m_document->fps()); int end = item->fadeIn(); if (end == 0) { @@ -3032,14 +3040,15 @@ QDomElement effect = oldeffect.cloneNode().toElement(); EffectsList::setParameter(oldeffect, "in", QString::number(start)); EffectsList::setParameter(oldeffect, "out", QString::number(end)); - slotUpdateClipEffect(item, effect, oldeffect, ix); - emit clipItemSelected(item, ix); + slotUpdateClipEffect(item, effect, oldeffect, ix2); + emit clipItemSelected(item, ix2); } } } else if (m_operationMode == FADEOUT) { // resize fade in effect ClipItem * item = static_cast <ClipItem *>(m_dragItem); int ix = item->hasEffect("volume", "fadeout"); + int ix2 = item->hasEffect("", "fade_to_black"); if (ix != -1) { QDomElement oldeffect = item->effectAt(ix); int end = (item->cropDuration() + item->cropStart()).frames(m_document->fps()); @@ -3055,15 +3064,18 @@ slotUpdateClipEffect(item, effect, oldeffect, ix); emit clipItemSelected(item, ix); } - } else if (item->fadeOut() != 0 && item->hasEffect("", "fade_to_black") == -1) { - QDomElement effect = MainWindow::audioEffects.getEffectByTag("volume", "fadeout").cloneNode().toElement(); + } else if (item->fadeOut() != 0 && ix2 == -1) { + QDomElement effect; + if (item->isVideoOnly() || (item->clipType() != AUDIO && item->clipType() != AV && item->clipType() != PLAYLIST)) { + // add video fade + effect = MainWindow::videoEffects.getEffectByTag("", "fade_to_black").cloneNode().toElement(); + } else effect = MainWindow::audioEffects.getEffectByTag("volume", "fadeout").cloneNode().toElement(); EffectsList::setParameter(effect, "in", QString::number(item->fadeOut())); EffectsList::setParameter(effect, "out", QString::number(0)); slotAddEffect(effect, m_dragItem->startPos(), m_dragItem->track()); } - ix = item->hasEffect("brightness", "fade_to_black"); - if (ix != -1) { - QDomElement oldeffect = item->effectAt(ix); + if (ix2 != -1) { + QDomElement oldeffect = item->effectAt(ix2); int end = (item->cropDuration() + item->cropStart()).frames(m_document->fps()); int start = item->fadeOut(); if (start == 0) { @@ -3074,8 +3086,8 @@ EffectsList::setParameter(oldeffect, "in", QString::number(start)); EffectsList::setParameter(oldeffect, "out", QString::number(end)); // kDebug()<<"EDIT FADE OUT : "<<start<<"x"<<end; - slotUpdateClipEffect(item, effect, oldeffect, ix); - emit clipItemSelected(item, ix); + slotUpdateClipEffect(item, effect, oldeffect, ix2); + emit clipItemSelected(item, ix2); } } } else if (m_operationMode == KEYFRAME) { @@ -4152,12 +4164,14 @@ QMatrix matrix; matrix = matrix.scale(scaleFactor, verticalScale); m_scene->setScale(scaleFactor, verticalScale); - if (m_visualTip) scene()->removeItem(m_visualTip); - m_animationTimer->stop(); - delete m_visualTip; - m_visualTip = NULL; - delete m_animation; - m_animation = NULL; + if (m_visualTip) { + scene()->removeItem(m_visualTip); + m_animationTimer->stop(); + delete m_animation; + m_animation = NULL; + delete m_visualTip; + m_visualTip = NULL; + } double verticalPos = mapToScene(QPoint(0, viewport()->height() / 2)).y(); setMatrix(matrix); m_cursorLine->setLine(m_cursorLine->line().x1(), 0, m_cursorLine->line().x1(), m_tracksHeight * m_document->tracksCount() * verticalScale); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <j-...@us...> - 2009-10-05 18:31:27
|
Revision: 4005 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=4005&view=rev Author: j-b-m Date: 2009-10-05 18:31:16 +0000 (Mon, 05 Oct 2009) Log Message: ----------- Fix issue with transition move Modified Paths: -------------- trunk/kdenlive/src/customtrackview.cpp Modified: trunk/kdenlive/src/customtrackview.cpp =================================================================== --- trunk/kdenlive/src/customtrackview.cpp 2009-10-05 18:09:50 UTC (rev 4004) +++ trunk/kdenlive/src/customtrackview.cpp 2009-10-05 18:31:16 UTC (rev 4005) @@ -2713,9 +2713,8 @@ if (m_dragItem->type() == TRANSITIONWIDGET && (m_dragItemInfo.startPos != info.startPos || m_dragItemInfo.track != info.track)) { Transition *transition = static_cast <Transition *>(m_dragItem); int transitionTrack; - if (!transition->forcedTrack()) transitionTrack = getPreviousVideoTrack(m_dragItem->track()); - else transitionTrack = transition->transitionEndTrack(); - if (!m_document->renderer()->mltMoveTransition(transition->transitionTag(), (int)(m_document->tracksCount() - m_dragItemInfo.track), (int)(m_document->tracksCount() - m_dragItem->track()), transitionTrack, m_dragItemInfo.startPos, m_dragItemInfo.endPos, info.startPos, info.endPos)) { + transition->updateTransitionEndTrack(getPreviousVideoTrack(m_dragItem->track())); + if (!m_document->renderer()->mltMoveTransition(transition->transitionTag(), (int)(m_document->tracksCount() - m_dragItemInfo.track), (int)(m_document->tracksCount() - m_dragItem->track()), transition->transitionEndTrack(), m_dragItemInfo.startPos, m_dragItemInfo.endPos, info.startPos, info.endPos)) { // Moving transition failed, revert to previous position emit displayMessage(i18n("Cannot move transition"), ErrorMessage); transition->setPos((int) m_dragItemInfo.startPos.frames(m_document->fps()), (m_dragItemInfo.track) * m_tracksHeight + 1); @@ -2980,7 +2979,7 @@ } } else if (m_dragItem->type() == TRANSITIONWIDGET) { Transition *transition = static_cast <Transition *>(m_dragItem); - if (!m_document->renderer()->mltMoveTransition(transition->transitionTag(), (int)(m_document->tracksCount() - m_dragItemInfo.track), (int)(m_document->tracksCount() - m_dragItemInfo.track), 0, m_dragItemInfo.startPos, m_dragItemInfo.endPos, info.startPos, info.endPos)) { + if (!m_document->renderer()->mltMoveTransition(transition->transitionTag(), (int)(m_document->tracksCount() - m_dragItemInfo.track), (int)(m_document->tracksCount() - m_dragItemInfo.track), transition->transitionEndTrack(), m_dragItemInfo.startPos, m_dragItemInfo.endPos, info.startPos, info.endPos)) { // Cannot resize transition transition->resizeEnd((int) m_dragItemInfo.endPos.frames(m_document->fps())); emit displayMessage(i18n("Cannot resize transition"), ErrorMessage); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |