Mercurial > hg > svcore
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); |