} else update(qMin(oldpos, newpos) * m_factor - offset() - 6, BIG_MARK_X, qAbs(oldpos - newpos) * m_factor + 14, MAX_HEIGHT - BIG_MARK_X);
}
+void CustomRuler::updateRuler(int min, int max)
+{
+ update(min * m_factor - offset(), 0, max - min, height());
+}
+
void CustomRuler::setPixelPerMark(int rate)
{
int scale = comboScale[rate];
void CustomTrackView::seekCursorPos(int pos)
{
+ int current = m_document->renderer()->requestedSeekPosition;
+ int playhead = m_document->renderer()->seekFramePosition();
+ int min;
+ int max;
+ if (current != SEEK_INACTIVE) {
+ min = qMin(pos, playhead);
+ min = qMin (min, current) - 5;
+ max = qMax(pos, playhead);
+ max = qMax(max, current) + 5;
+ }
+ else {
+ min = qMin(pos, playhead) - 5;
+ max = qMax(pos, playhead) + 5;
+ }
m_document->renderer()->seek(pos);
- emit updateRuler();
+ emit updateRuler(min, max);
}
int CustomTrackView::seekPosition() const
void CustomTrackView::moveCursorPos(int delta)
{
int currentPos = m_document->renderer()->requestedSeekPosition;
- if (currentPos == SEEK_INACTIVE) currentPos = m_document->renderer()->seekFramePosition();
- if (currentPos + delta < 0) delta = 0 - currentPos;
- currentPos += delta;
+ int actualPos = m_document->renderer()->seekPosition().frames(m_document->fps());
+ int min;
+ int max;
+ if (currentPos == SEEK_INACTIVE) {
+ currentPos = actualPos + delta;
+ if (currentPos < 0) currentPos = 0;
+ min = qMin(actualPos, currentPos) - 5;
+ max = qMax(actualPos, currentPos) + 5;
+ }
+ else {
+ min = qMin(currentPos, currentPos + delta);
+ min = qMin (min, actualPos) - 5;
+ max = qMax(currentPos, currentPos + delta);
+ max = qMax(max, actualPos) + 5;
+ currentPos += delta;
+ if (currentPos < 0) currentPos = 0;
+ }
+
m_document->renderer()->seek(currentPos);
- emit updateRuler();
+ emit updateRuler(min, max);
}
void CustomTrackView::initCursorPos(int pos)
if (m_doc->setSceneList() == -1) *ok = false;
else *ok = true;
connect(m_trackview, SIGNAL(cursorMoved(int, int)), m_ruler, SLOT(slotCursorMoved(int, int)));
- connect(m_trackview, SIGNAL(updateRuler()), m_ruler, SLOT(update()));
+ connect(m_trackview, SIGNAL(updateRuler(int, int)), m_ruler, SLOT(updateRuler(int, int)));
connect(m_trackview->horizontalScrollBar(), SIGNAL(valueChanged(int)), m_ruler, SLOT(slotMoveRuler(int)));
connect(m_trackview->horizontalScrollBar(), SIGNAL(rangeChanged(int, int)), this, SLOT(slotUpdateVerticalScroll(int, int)));