Mercurial > hg > svgui
diff view/View.cpp @ 511:455810e65543
* Do a _slightly_ better job of ensuring new panes come up showing the
right region of the track (but not quite better enough)
author | Chris Cannam |
---|---|
date | Thu, 26 Feb 2009 11:02:05 +0000 |
parents | 683c46d7500b |
children | 1341e95eeae9 |
line wrap: on
line diff
--- a/view/View.cpp Thu Feb 26 10:49:08 2009 +0000 +++ b/view/View.cpp Thu Feb 26 11:02:05 2009 +0000 @@ -677,17 +677,19 @@ m_manager, SLOT(viewZoomLevelChanged(unsigned long, bool))); if (m_followPlay == PlaybackScrollPage) { -// std::cerr << "View::setViewManager: setting centre frame to global centre frame: " << m_manager->getGlobalCentreFrame() << std::endl; + std::cerr << "View::setViewManager: setting centre frame to global centre frame: " << m_manager->getGlobalCentreFrame() << std::endl; setCentreFrame(m_manager->getGlobalCentreFrame(), false); } else if (m_followPlay == PlaybackScrollContinuous) { -// std::cerr << "View::setViewManager: setting centre frame to playback frame: " << m_manager->getPlaybackFrame() << std::endl; + std::cerr << "View::setViewManager: setting centre frame to playback frame: " << m_manager->getPlaybackFrame() << std::endl; setCentreFrame(m_manager->getPlaybackFrame(), false); } else if (m_followPan) { -// std::cerr << "View::setViewManager: setting centre frame to global centre frame: " << m_manager->getGlobalCentreFrame() << std::endl; + std::cerr << "View::setViewManager: (follow pan) setting centre frame to global centre frame: " << m_manager->getGlobalCentreFrame() << std::endl; setCentreFrame(m_manager->getGlobalCentreFrame(), false); } if (m_followZoom) setZoomLevel(m_manager->getGlobalZoom()); + movePlayPointer(getAlignedPlaybackFrame()); + toolModeChanged(); } @@ -927,17 +929,24 @@ f = getAlignedPlaybackFrame(); - if (m_playPointerFrame == f) return; - bool visible = (getXForFrame(m_playPointerFrame) != getXForFrame(f)); + movePlayPointer(f); +} + +void +View::movePlayPointer(unsigned long newFrame) +{ + if (m_playPointerFrame == newFrame) return; + bool visibleChange = + (getXForFrame(m_playPointerFrame) != getXForFrame(newFrame)); size_t oldPlayPointerFrame = m_playPointerFrame; - m_playPointerFrame = f; - if (!visible) return; + m_playPointerFrame = newFrame; + if (!visibleChange) return; switch (m_followPlay) { case PlaybackScrollContinuous: if (QApplication::mouseButtons() == Qt::NoButton) { - setCentreFrame(f, false); + setCentreFrame(m_playPointerFrame, false); } break; @@ -948,7 +957,7 @@ long w = getEndFrame() - getStartFrame(); w -= w/5; - long sf = (f / w) * w - w/8; + long sf = (m_playPointerFrame / w) * w - w/8; if (m_manager && m_manager->isPlaying() && @@ -963,7 +972,7 @@ } #ifdef DEBUG_VIEW_WIDGET_PAINT - std::cerr << "PlaybackScrollPage: f = " << f << ", sf = " << sf << ", start frame " + std::cerr << "PlaybackScrollPage: f = " << m_playPointerFrame << ", sf = " << sf << ", start frame " << getStartFrame() << std::endl; #endif @@ -994,7 +1003,8 @@ } case PlaybackIgnore: - if (long(f) >= getStartFrame() && f < getEndFrame()) { + if (long(m_playPointerFrame) >= getStartFrame() && + m_playPointerFrame < getEndFrame()) { update(); } break;