MCPcopy Create free account
hub / github.com/audacity/audacity / HandleQPDrag

Method HandleQPDrag

src/AdornedRulerPanel.cpp:1811–1888  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1809}
1810
1811void AdornedRulerPanel::HandleQPDrag(wxMouseEvent &/*event*/, wxCoord mousePosX)
1812{
1813 bool isWithinClick =
1814 (mLeftDownClickUnsnapped >= 0) &&
1815 IsWithinMarker(mousePosX, mLeftDownClickUnsnapped);
1816 bool isWithinStart = IsWithinMarker(mousePosX, mOldPlayRegion.GetStart());
1817 bool isWithinEnd = IsWithinMarker(mousePosX, mOldPlayRegion.GetEnd());
1818 bool canDragSel = !mOldPlayRegion.Active() && mPlayRegionDragsSelection;
1819 auto &viewInfo = ViewInfo::Get( *GetProject() );
1820 auto &playRegion = viewInfo.playRegion;
1821
1822 switch (mMouseEventState)
1823 {
1824 case mesNone:
1825 // If close to either end of play region, snap to closest
1826 if (isWithinStart || isWithinEnd) {
1827 if (fabs(mQuickPlayPos[0] - mOldPlayRegion.GetStart()) < fabs(mQuickPlayPos[0] - mOldPlayRegion.GetEnd()))
1828 mQuickPlayPos[0] = mOldPlayRegion.GetStart();
1829 else
1830 mQuickPlayPos[0] = mOldPlayRegion.GetEnd();
1831 }
1832 break;
1833 case mesDraggingPlayRegionStart:
1834 // Don't start dragging until beyond tolerance initial playback start
1835 if (!mIsDragging && isWithinStart)
1836 mQuickPlayPos[0] = mOldPlayRegion.GetStart();
1837 else
1838 mIsDragging = true;
1839 // avoid accidental tiny selection
1840 if (isWithinEnd)
1841 mQuickPlayPos[0] = mOldPlayRegion.GetEnd();
1842 playRegion.SetStart( mQuickPlayPos[0] );
1843 if (canDragSel) {
1844 DragSelection(*GetProject());
1845 }
1846 break;
1847 case mesDraggingPlayRegionEnd:
1848 if (!mIsDragging && isWithinEnd) {
1849 mQuickPlayPos[0] = mOldPlayRegion.GetEnd();
1850 }
1851 else
1852 mIsDragging = true;
1853 if (isWithinStart) {
1854 mQuickPlayPos[0] = mOldPlayRegion.GetStart();
1855 }
1856 playRegion.SetEnd( mQuickPlayPos[0] );
1857 if (canDragSel) {
1858 DragSelection(*GetProject());
1859 }
1860 break;
1861 case mesSelectingPlayRegionClick:
1862
1863 // Don't start dragging until mouse is beyond tolerance of initial click.
1864 if (isWithinClick || mLeftDownClick == -1) {
1865 mQuickPlayPos[0] = mLeftDownClick;
1866 playRegion.SetTimes(mLeftDownClick, mLeftDownClick);
1867 }
1868 else {

Callers 2

ClickMethod · 0.80
DragMethod · 0.80

Calls 5

GetFunction · 0.85
SetStartMethod · 0.80
SetEndMethod · 0.80
UpdateFunction · 0.50
SetTimesMethod · 0.45

Tested by

no test coverage detected