From 46d5b2c8d8dbade168cc33506aa0e7b535628668 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Mon, 29 Dec 2008 01:55:00 +0000 Subject: [PATCH] Fix problem with clip resize, should solve: http://www.kdenlive.org:80/mantis/view.php?id=362 svn path=/branches/KDE4/; revision=2852 --- src/abstractclipitem.cpp | 15 ++++++++------- src/clipitem.cpp | 25 ++++++++++++++++--------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/abstractclipitem.cpp b/src/abstractclipitem.cpp index 427aa0d8..9a7ed808 100644 --- a/src/abstractclipitem.cpp +++ b/src/abstractclipitem.cpp @@ -94,12 +94,13 @@ void AbstractClipItem::resizeStart(int posx, double speed) { setRect(0, 0, cropDuration().frames(m_fps) - 0.02, rect().height()); setPos(m_startPos.frames(m_fps), pos().y()); - if (pos().x() != m_startPos.frames(m_fps)) { - GenTime diff = GenTime(pos().x(), m_fps) - m_startPos; - m_startPos += diff; - m_cropDuration = m_cropDuration - diff; + if ((int) pos().x() != posx) { + //kDebug()<<"////// WARNING, DIFF IN XPOS: "<= maxDuration()) { - kDebug() << "// MAX OVERLOAD:" << cropDuration().frames(25) << " + " << durationDiff.frames(25) << ", MAX:" << maxDuration().frames(25); + //kDebug() << "// MAX OVERLOAD:" << cropDuration().frames(25) << " + " << durationDiff.frames(25) << ", MAX:" << maxDuration().frames(25); durationDiff = maxDuration() - cropDuration() - cropStart(); } //kDebug() << "// DUR DIFF2:" << durationDiff.frames(25) << ", ADJUSTED: " << durationDiff.frames(25) * speed << ", SPED:" << speed; @@ -142,9 +143,9 @@ void AbstractClipItem::resizeEnd(int posx, double speed, bool updateKeyFrames) { for (int i = 0; i < collisionList.size(); ++i) { QGraphicsItem *item = collisionList.at(i); if (item->type() == type() && item->pos().x() > pos().x()) { - kDebug() << "///////// COLLISION DETECTED!!!!!!!!!"; + /*kDebug() << "///////// COLLISION DETECTED!!!!!!!!!"; kDebug() << "///////// CURRENT: " << startPos().frames(25) << "x" << endPos().frames(25) << ", RECT: " << rect() << "-" << pos(); - kDebug() << "///////// COLLISION: " << ((AbstractClipItem *)item)->startPos().frames(25) << "x" << ((AbstractClipItem *)item)->endPos().frames(25) << ", RECT: " << ((AbstractClipItem *)item)->rect() << "-" << item->pos(); + kDebug() << "///////// COLLISION: " << ((AbstractClipItem *)item)->startPos().frames(25) << "x" << ((AbstractClipItem *)item)->endPos().frames(25) << ", RECT: " << ((AbstractClipItem *)item)->rect() << "-" << item->pos();*/ GenTime diff = ((AbstractClipItem *)item)->startPos() - GenTime(1, m_fps) - startPos(); m_cropDuration = diff; setRect(0, 0, m_cropDuration.frames(m_fps) - 0.02, rect().height()); diff --git a/src/clipitem.cpp b/src/clipitem.cpp index 1b493385..060327fe 100644 --- a/src/clipitem.cpp +++ b/src/clipitem.cpp @@ -955,10 +955,12 @@ void ClipItem::resizeStart(int posx, double speed) { if (posx == startPos().frames(m_fps)) return; const int previous = cropStart().frames(m_fps); AbstractClipItem::resizeStart(posx, m_speed); - checkEffectsKeyframesPos(previous, cropStart().frames(m_fps), true); - if (m_hasThumbs && KdenliveSettings::videothumbnails()) { - /*connect(m_clip->thumbProducer(), SIGNAL(thumbReady(int, QPixmap)), this, SLOT(slotThumbReady(int, QPixmap)));*/ - startThumbTimer->start(100); + if ((int) cropStart().frames(m_fps) != previous) { + checkEffectsKeyframesPos(previous, cropStart().frames(m_fps), true); + if (m_hasThumbs && KdenliveSettings::videothumbnails()) { + /*connect(m_clip->thumbProducer(), SIGNAL(thumbReady(int, QPixmap)), this, SLOT(slotThumbReady(int, QPixmap)));*/ + startThumbTimer->start(150); + } } } @@ -969,10 +971,12 @@ void ClipItem::resizeEnd(int posx, double speed, bool updateKeyFrames) { //kDebug() << "// NEW POS: " << posx << ", OLD END: " << endPos().frames(m_fps); const int previous = (cropStart() + duration()).frames(m_fps); AbstractClipItem::resizeEnd(posx, m_speed); - if (updateKeyFrames) checkEffectsKeyframesPos(previous, (cropStart() + duration()).frames(m_fps), false); - if (m_hasThumbs && KdenliveSettings::videothumbnails()) { - /*connect(m_clip->thumbProducer(), SIGNAL(thumbReady(int, QPixmap)), this, SLOT(slotThumbReady(int, QPixmap)));*/ - endThumbTimer->start(100); + if ((int)(cropStart() + duration()).frames(m_fps) != previous) { + if (updateKeyFrames) checkEffectsKeyframesPos(previous, (cropStart() + duration()).frames(m_fps), false); + if (m_hasThumbs && KdenliveSettings::videothumbnails()) { + /*connect(m_clip->thumbProducer(), SIGNAL(thumbReady(int, QPixmap)), this, SLOT(slotThumbReady(int, QPixmap)));*/ + endThumbTimer->start(150); + } } } @@ -1058,7 +1062,10 @@ QVariant ClipItem::itemChange(GraphicsItemChange change, const QVariant &value) QList subitems = scene()->items(sceneShape, Qt::IntersectsItemShape); subitems.removeAll(this); for (int j = 0; j < subitems.count(); j++) { - if (subitems.at(j)->type() == type()) return pos(); + if (subitems.at(j)->type() == type()) { + m_startPos = GenTime((int) pos().x(), m_fps); + return pos(); + } } } -- 2.39.2