update();
}
+
+// virtual
+void CustomRuler::wheelEvent(QWheelEvent * e) {
+ int delta = 1;
+ if (e->modifiers() == Qt::ControlModifier) delta = m_timecode.fps();
+ if (e->delta() < 0) delta = 0 - delta;
+ m_view->moveCursorPos(delta);
+}
+
int CustomRuler::inPoint() const {
return m_zoneStart;
}
public:
CustomRuler(Timecode tc, CustomTrackView *parent);
- virtual void mousePressEvent(QMouseEvent * event);
- virtual void mouseMoveEvent(QMouseEvent * event);
void setPixelPerMark(double rate);
static const int comboScale[];
int outPoint() const;
protected:
virtual void paintEvent(QPaintEvent * /*e*/);
+ virtual void wheelEvent(QWheelEvent * e);
+ virtual void mousePressEvent(QMouseEvent * event);
+ virtual void mouseMoveEvent(QMouseEvent * event);
private:
int m_cursorPosition;
return (int)(m_cursorPos * m_scale);
}
+void CustomTrackView::moveCursorPos(int delta) {
+ emit cursorMoved((int)(m_cursorPos * m_scale), (int)((m_cursorPos + delta) * m_scale));
+ m_cursorPos += delta;
+ m_cursorLine->setPos(m_cursorPos * m_scale, 0);
+ m_document->renderer()->seek(GenTime(m_cursorPos, m_document->fps()));
+ //if (m_autoScroll && m_scale < 50) checkScrolling();
+}
+
void CustomTrackView::checkScrolling() {
QRect rectInView = viewport()->rect();
int delta = rectInView.width() / 3;
public slots:
void setCursorPos(int pos, bool seek = true);
+ void moveCursorPos(int delta);
void updateCursorPos();
void slotDeleteEffect(ClipItem *clip, QDomElement effect);
void slotChangeEffectState(ClipItem *clip, QDomElement effect, bool disable);
// virtual
void Monitor::wheelEvent(QWheelEvent * event) {
- if (event->delta() > 0) slotForwardOneFrame();
- else slotRewindOneFrame();
+ if (event->modifiers() == Qt::ControlModifier) {
+ int delta = m_monitorManager->timecode().fps();
+ if (event->delta() < 0) delta = 0 - delta;
+ slotSeek(m_position + delta);
+ } else {
+ if (event->delta() > 0) slotForwardOneFrame();
+ else slotRewindOneFrame();
+ }
}
void Monitor::slotExtractCurrentFrame() {
void Monitor::slotSeek(int pos) {
if (!m_isActive) m_monitorManager->activateMonitor(m_name);
if (render == NULL) return;
- int realPos = (int)(((double) pos) / m_scale);
- render->seekToFrame(realPos);
- m_position = realPos;
+ render->seekToFrame(pos);
+ m_position = pos;
emit renderPosition(m_position);
m_timePos->setText(m_monitorManager->timecode().getTimecodeFromFrames(m_position));
}