From ffc86648981537b566a89ad63d57c5430b720829 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sat, 17 Nov 2012 22:51:24 +0100 Subject: [PATCH 1/1] Fix recent freeze on transition select --- src/customtrackview.cpp | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 28a275d4..ebeb7194 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -818,8 +818,10 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) while (!m_dragGuide && ct < collisionList.count()) { if (collisionList.at(ct)->type() == AVWIDGET || collisionList.at(ct)->type() == TRANSITIONWIDGET) { collisionClip = static_cast (collisionList.at(ct)); - if (collisionClip->isItemLocked() || !collisionClip->isEnabled()) + if (collisionClip->isItemLocked() || !collisionClip->isEnabled()) { + ct++; continue; + } if (collisionClip == m_dragItem) { collisionClip = NULL; } @@ -843,6 +845,7 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) if (m_dragItem) emit clipItemSelected(NULL); m_dragItem = NULL; } + #if QT_VERSION >= 0x040800 // Add shadow to dragged item, currently disabled because of painting artifacts /*if (m_dragItem) { @@ -852,12 +855,25 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) m_dragItem->setGraphicsEffect(eff); }*/ #endif - if (m_dragItem && m_dragItem->type() == TRANSITIONWIDGET) { + if (m_dragItem && m_dragItem->type() == TRANSITIONWIDGET && m_dragItem->isEnabled()) { // update transition menu action m_autoTransition->setChecked(static_cast(m_dragItem)->isAutomatic()); m_autoTransition->setEnabled(true); - } else m_autoTransition->setEnabled(false); - + // A transition is selected + QPoint p; + ClipItem *transitionClip = getClipItemAt(m_dragItemInfo.startPos, m_dragItemInfo.track); + if (transitionClip && transitionClip->baseClip()) { + QString size = transitionClip->baseClip()->getProperty("frame_size"); + double factor = transitionClip->baseClip()->getProperty("aspect_ratio").toDouble(); + if (factor == 0) factor = 1.0; + p.setX((int)(size.section('x', 0, 0).toInt() * factor + 0.5)); + p.setY(size.section('x', 1, 1).toInt()); + } + emit transitionItemSelected(static_cast (m_dragItem), getPreviousVideoTrack(m_dragItem->track()), p); + } else { + emit transitionItemSelected(NULL); + m_autoTransition->setEnabled(false); + } // context menu requested if (event->button() == Qt::RightButton) { if (!m_dragItem && !m_dragGuide) { @@ -1181,7 +1197,6 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) resetSelectionGroup(false); m_dragItem->setSelected(true); } - m_blockRefresh = false; } @@ -4096,19 +4111,6 @@ void CustomTrackView::mouseReleaseEvent(QMouseEvent * event) updateEffect(m_document->tracksCount() - item->track(), item->startPos(), item->selectedEffect()); emit clipItemSelected(item); } - if (m_dragItem && m_dragItem->type() == TRANSITIONWIDGET && m_dragItem->isSelected() && m_dragItem->isEnabled()) { - // A transition is selected - QPoint p; - ClipItem *transitionClip = getClipItemAt(m_dragItemInfo.startPos, m_dragItemInfo.track); - if (transitionClip && transitionClip->baseClip()) { - QString size = transitionClip->baseClip()->getProperty("frame_size"); - double factor = transitionClip->baseClip()->getProperty("aspect_ratio").toDouble(); - if (factor == 0) factor = 1.0; - p.setX((int)(size.section('x', 0, 0).toInt() * factor + 0.5)); - p.setY(size.section('x', 1, 1).toInt()); - } - emit transitionItemSelected(static_cast (m_dragItem), getPreviousVideoTrack(m_dragItem->track()), p); - } else emit transitionItemSelected(NULL); if (m_operationMode != NONE && m_operationMode != MOVE) setDocumentModified(); m_operationMode = NONE; } -- 2.39.5