From 4fab846bac68692f5a9cdff7f8b4ca5e45ff84e8 Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Fri, 6 Mar 2020 13:40:01 +0800 Subject: [PATCH] allow configure wheel sensitivity #254 --- src/App.jsx | 22 +++++++++++++++++++++- src/Settings.jsx | 9 ++++++++- src/Timeline.jsx | 8 ++++---- src/store.js | 1 + 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 86363331..71f4b5cb 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -190,10 +190,13 @@ const App = memo(() => { useEffect(() => configStore.set('muted', muted), [muted]); const [autoSaveProjectFile, setAutoSaveProjectFile] = useState(configStore.get('autoSaveProjectFile')); useEffect(() => configStore.set('autoSaveProjectFile', autoSaveProjectFile), [autoSaveProjectFile]); + const [wheelSensitivity, setWheelSensitivity] = useState(configStore.get('wheelSensitivity')); + useEffect(() => configStore.set('wheelSensitivity', wheelSensitivity), [wheelSensitivity]); // Global state const [helpVisible, setHelpVisible] = useState(false); const [settingsVisible, setSettingsVisible] = useState(false); + const [wheelTunerVisible, setWheelTunerVisible] = useState(false); const [mifiLink, setMifiLink] = useState(); const videoRef = useRef(); @@ -1375,6 +1378,12 @@ const App = memo(() => { /> ), [autoExportExtraStreams]); + const onWheelTunerRequested = useCallback(() => { + console.log('wat'); + setSettingsVisible(false); + setWheelTunerVisible(true); + }, []); + const renderSettings = useCallback(() => ( { renderOutFmt={renderOutFmt} AutoExportToggler={AutoExportToggler} renderCaptureFormatButton={renderCaptureFormatButton} + onWheelTunerRequested={onWheelTunerRequested} /> - ), [AutoExportToggler, askBeforeClose, autoMerge, autoSaveProjectFile, customOutDir, invertCutSegments, keyframeCut, renderCaptureFormatButton, renderOutFmt, timecodeShowFrames, setOutputDir]); + ), [AutoExportToggler, askBeforeClose, autoMerge, autoSaveProjectFile, customOutDir, invertCutSegments, keyframeCut, renderCaptureFormatButton, renderOutFmt, timecodeShowFrames, setOutputDir, onWheelTunerRequested]); useEffect(() => { loadMifiLink().then(setMifiLink); @@ -1649,6 +1659,7 @@ const App = memo(() => { formatTimecode={formatTimecode} timelineHeight={timelineHeight} onZoomWindowStartTimeChange={setZoomWindowStartTime} + wheelSensitivity={wheelSensitivity} /> { setZoom={setZoom} invertCutSegments={invertCutSegments} setInvertCutSegments={setInvertCutSegments} + toggleComfortZoom={toggleComfortZoom} /> { onTogglePress={toggleSettings} renderSettings={renderSettings} /> + + {wheelTunerVisible && ( +
+ Scroll sensitivity + setWheelSensitivity(e.target.value / 1000)} /> + +
+ )} ); }); diff --git a/src/Settings.jsx b/src/Settings.jsx index 6fea03e0..c82a2a36 100644 --- a/src/Settings.jsx +++ b/src/Settings.jsx @@ -4,7 +4,7 @@ import { Button, Table, SegmentedControl, Checkbox } from 'evergreen-ui'; const Settings = memo(({ setOutputDir, customOutDir, autoMerge, setAutoMerge, keyframeCut, setKeyframeCut, invertCutSegments, setInvertCutSegments, autoSaveProjectFile, setAutoSaveProjectFile, timecodeShowFrames, setTimecodeShowFrames, askBeforeClose, setAskBeforeClose, - renderOutFmt, AutoExportToggler, renderCaptureFormatButton, + renderOutFmt, AutoExportToggler, renderCaptureFormatButton, onWheelTunerRequested, }) => { // eslint-disable-next-line react/jsx-props-no-spreading const Row = (props) => ; @@ -116,6 +116,13 @@ const Settings = memo(({ + + Scroll/wheel sensitivity + + + + + Ask for confirmation when closing app or file? diff --git a/src/Timeline.jsx b/src/Timeline.jsx index cfcbe27e..96800dfa 100644 --- a/src/Timeline.jsx +++ b/src/Timeline.jsx @@ -42,7 +42,7 @@ const Timeline = memo(({ zoom, neighbouringFrames, seekAbs, seekRel, duration, apparentCutSegments, zoomRel, setCurrentSegIndex, currentSegIndexSafe, invertCutSegments, inverseCutSegments, formatTimecode, waveform, shouldShowWaveform, shouldShowKeyframes, timelineHeight, thumbnails, - onZoomWindowStartTimeChange, waveformEnabled, thumbnailsEnabled, + onZoomWindowStartTimeChange, waveformEnabled, thumbnailsEnabled, wheelSensitivity, }) => { const timelineScrollerRef = useRef(); const timelineScrollerSkipEventRef = useRef(); @@ -148,11 +148,11 @@ const Timeline = memo(({ const { pixelX, pixelY } = normalizeWheel(e); // console.log({ spinX, spinY, pixelX, pixelY }); if (e.ctrlKey) { - zoomRel(-pixelY / 10); + zoomRel(-pixelY * wheelSensitivity * 0.4); } else { - seekRel((pixelX + pixelY) / 15); + seekRel((pixelX + pixelY) * wheelSensitivity * 0.2); } - }, [seekRel, zoomRel]); + }, [seekRel, zoomRel, wheelSensitivity]); return (