comparison base/View.cpp @ 107:f258fd1f74b4

* win32 fixes * Attempt to make playback pointer movement smoother under load
author Chris Cannam
date Fri, 05 May 2006 16:38:18 +0000
parents 0a846f83a4b7
children 0c19e50bad7c
comparison
equal deleted inserted replaced
106:45175d8c5dc5 107:f258fd1f74b4
736 bool visible = (getXForFrame(m_playPointerFrame) != getXForFrame(f)); 736 bool visible = (getXForFrame(m_playPointerFrame) != getXForFrame(f));
737 size_t oldPlayPointerFrame = m_playPointerFrame; 737 size_t oldPlayPointerFrame = m_playPointerFrame;
738 m_playPointerFrame = f; 738 m_playPointerFrame = f;
739 if (!visible) return; 739 if (!visible) return;
740 740
741 bool modifierPressed = // we only care about these ones
742 ((QApplication::keyboardModifiers() & Qt::ShiftModifier)
743 #ifndef Q_WS_MAC
744 /* OS/X reports that CtrlModifier is pressed after we've
745 imported a file with Apple+I even though we then released it */
746 || (QApplication::keyboardModifiers() & Qt::ControlModifier)
747 #endif
748 );
749
750 switch (m_followPlay) { 741 switch (m_followPlay) {
751 742
752 case PlaybackScrollContinuous: 743 case PlaybackScrollContinuous:
753 if (QApplication::mouseButtons() == Qt::NoButton && 744 if (QApplication::mouseButtons() == Qt::NoButton) {
754 !modifierPressed) {
755 setCentreFrame(f, false); 745 setCentreFrame(f, false);
756 } 746 }
757 break; 747 break;
758 748
759 case PlaybackScrollPage: 749 case PlaybackScrollPage:
760 { 750 {
761 int xold = getXForFrame(oldPlayPointerFrame); 751 int xold = getXForFrame(oldPlayPointerFrame);
762 repaint(xold - 1, 0, 3, height()); 752 update(xold - 1, 0, 3, height());
763 753
764 long w = getEndFrame() - getStartFrame(); 754 long w = getEndFrame() - getStartFrame();
765 w -= w/5; 755 w -= w/5;
766 long sf = (f / w) * w - w/8; 756 long sf = (f / w) * w - w/8;
767 757
790 #ifdef DEBUG_VIEW_WIDGET_PAINT 780 #ifdef DEBUG_VIEW_WIDGET_PAINT
791 std::cerr << "xnew = " << xnew << ", width = " << width() << std::endl; 781 std::cerr << "xnew = " << xnew << ", width = " << width() << std::endl;
792 #endif 782 #endif
793 783
794 if (xnew < width()/8 || xnew > (width()*7)/8) { 784 if (xnew < width()/8 || xnew > (width()*7)/8) {
795 if (QApplication::mouseButtons() == Qt::NoButton && 785 if (QApplication::mouseButtons() == Qt::NoButton) {
796 !modifierPressed) {
797 long offset = getFrameForX(width()/2) - getStartFrame(); 786 long offset = getFrameForX(width()/2) - getStartFrame();
798 long newCentre = sf + offset; 787 long newCentre = sf + offset;
799 bool changed = setCentreFrame(newCentre, false); 788 bool changed = setCentreFrame(newCentre, false);
800 if (changed) { 789 if (changed) {
801 xold = getXForFrame(oldPlayPointerFrame); 790 xold = getXForFrame(oldPlayPointerFrame);