X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcustomruler.cpp;h=e173297466794337bbdcb9a7ea1734baeaf6f8c9;hb=dec4e4c60fabbd22d90ea55e34f59948e30a35a4;hp=2d07ee52ce46b9d5a9e29e17655877f8a4580c60;hpb=dfe4d05b51c6407275ab2cdea69ca051e5b3ab87;p=kdenlive diff --git a/src/customruler.cpp b/src/customruler.cpp index 2d07ee52..e1732974 100644 --- a/src/customruler.cpp +++ b/src/customruler.cpp @@ -43,6 +43,7 @@ static const int LITTLE_MARK_LENGTH = (MIDDLE_MARK_LENGTH / 2); static const int LITTLE_MARK_X2 = LINE_END; static const int LITTLE_MARK_X1 = (LITTLE_MARK_X2 - LITTLE_MARK_LENGTH); +static int FRAME_SIZE; static int LABEL_SIZE; static const int END_LABEL_X = 4; static const int END_LABEL_Y = (END_LABEL_X + LABEL_SIZE - 2); @@ -62,16 +63,15 @@ CustomRuler::CustomRuler(Timecode tc, CustomTrackView *parent) : m_duration(0), m_offset(0), m_clickedGuide(-1), + m_rate(-1), m_mouseMove(NO_MOVE) { setFont(KGlobalSettings::toolBarFont()); QFontMetricsF fontMetrics(font()); LABEL_SIZE = fontMetrics.ascent() - 2; + updateFrameSize(); m_scale = 3; m_zoneColor = KStatefulBrush(KColorScheme::View, KColorScheme::PositiveBackground, KSharedConfig::openConfig(KdenliveSettings::colortheme())).brush(this).color(); - littleMarkDistance = FRAME_SIZE; - mediumMarkDistance = FRAME_SIZE * m_timecode.fps(); - bigMarkDistance = FRAME_SIZE * m_timecode.fps() * 60; m_zoneStart = 0; m_zoneEnd = 100; m_contextMenu = new QMenu(this); @@ -97,6 +97,16 @@ void CustomRuler::updateProjectFps(Timecode t) update(); } +void CustomRuler::updateFrameSize() +{ + FRAME_SIZE = m_view->getFrameWidth(); + littleMarkDistance = FRAME_SIZE; + mediumMarkDistance = FRAME_SIZE * m_timecode.fps(); + bigMarkDistance = FRAME_SIZE * m_timecode.fps() * 60; + updateProjectFps(m_timecode); + if (m_rate > 0) setPixelPerMark(m_rate); +} + void CustomRuler::slotEditGuide() { m_view->slotEditGuide(m_clickedGuide); @@ -122,7 +132,12 @@ void CustomRuler::setZone(QPoint p) void CustomRuler::mouseReleaseEvent(QMouseEvent * /*event*/) { + if (m_moveCursor == RULER_START || m_moveCursor == RULER_END || m_moveCursor == RULER_MIDDLE) { + emit zoneMoved(m_zoneStart, m_zoneEnd); + m_view->setDocumentModified(); + } m_mouseMove = NO_MOVE; + } // virtual @@ -144,6 +159,7 @@ void CustomRuler::mousePressEvent(QMouseEvent * event) if (qAbs(pos - m_zoneStart * m_factor) < 4) m_moveCursor = RULER_START; else if (qAbs(pos - (m_zoneStart + (m_zoneEnd - m_zoneStart) / 2) * m_factor) < 4) m_moveCursor = RULER_MIDDLE; else if (qAbs(pos - m_zoneEnd * m_factor) < 4) m_moveCursor = RULER_END; + m_view->updateSnapPoints(NULL); } if (m_moveCursor == RULER_CURSOR) { m_view->setCursorPos((int) pos / m_factor); @@ -188,8 +204,6 @@ void CustomRuler::mouseMoveEvent(QMouseEvent * event) m_zoneStart += move; m_zoneEnd += move; } - emit zoneMoved(m_zoneStart, m_zoneEnd); - m_view->setDocumentModified(); int min = qMin(m_zoneStart, zoneStart); int max = qMax(m_zoneEnd, zoneEnd);