Invert timeline trackpad/wheel #310

Also add setting to change back
pull/333/head
Mikael Finstad 6 years ago
parent e6d71754fe
commit 099a5b3407

@ -218,6 +218,8 @@ const App = memo(() => {
useEffect(() => safeSetConfig('autoSaveProjectFile', autoSaveProjectFile), [autoSaveProjectFile]); useEffect(() => safeSetConfig('autoSaveProjectFile', autoSaveProjectFile), [autoSaveProjectFile]);
const [wheelSensitivity, setWheelSensitivity] = useState(configStore.get('wheelSensitivity')); const [wheelSensitivity, setWheelSensitivity] = useState(configStore.get('wheelSensitivity'));
useEffect(() => safeSetConfig('wheelSensitivity', wheelSensitivity), [wheelSensitivity]); useEffect(() => safeSetConfig('wheelSensitivity', wheelSensitivity), [wheelSensitivity]);
const [invertTimelineScroll, setInvertTimelineScroll] = useState(configStore.get('invertTimelineScroll'));
useEffect(() => safeSetConfig('invertTimelineScroll', invertTimelineScroll), [invertTimelineScroll]);
const [language, setLanguage] = useState(configStore.get('language')); const [language, setLanguage] = useState(configStore.get('language'));
useEffect(() => safeSetConfig('language', language), [language]); useEffect(() => safeSetConfig('language', language), [language]);
@ -1645,6 +1647,8 @@ const App = memo(() => {
setTimecodeShowFrames={setTimecodeShowFrames} setTimecodeShowFrames={setTimecodeShowFrames}
askBeforeClose={askBeforeClose} askBeforeClose={askBeforeClose}
setAskBeforeClose={setAskBeforeClose} setAskBeforeClose={setAskBeforeClose}
invertTimelineScroll={invertTimelineScroll}
setInvertTimelineScroll={setInvertTimelineScroll}
language={language} language={language}
setLanguage={setLanguage} setLanguage={setLanguage}
@ -1653,7 +1657,7 @@ const App = memo(() => {
renderCaptureFormatButton={renderCaptureFormatButton} renderCaptureFormatButton={renderCaptureFormatButton}
onWheelTunerRequested={onWheelTunerRequested} onWheelTunerRequested={onWheelTunerRequested}
/> />
), [AutoExportToggler, askBeforeClose, autoMerge, autoSaveProjectFile, customOutDir, invertCutSegments, keyframeCut, renderCaptureFormatButton, renderOutFmt, timecodeShowFrames, changeOutDir, onWheelTunerRequested, language]); ), [AutoExportToggler, askBeforeClose, autoMerge, autoSaveProjectFile, customOutDir, invertCutSegments, keyframeCut, renderCaptureFormatButton, renderOutFmt, timecodeShowFrames, changeOutDir, onWheelTunerRequested, language, invertTimelineScroll]);
useEffect(() => { useEffect(() => {
if (!isStoreBuild) loadMifiLink().then(setMifiLink); if (!isStoreBuild) loadMifiLink().then(setMifiLink);
@ -1916,6 +1920,7 @@ const App = memo(() => {
timelineHeight={timelineHeight} timelineHeight={timelineHeight}
onZoomWindowStartTimeChange={setZoomWindowStartTime} onZoomWindowStartTimeChange={setZoomWindowStartTime}
wheelSensitivity={wheelSensitivity} wheelSensitivity={wheelSensitivity}
invertTimelineScroll={invertTimelineScroll}
/> />
<TimelineControls <TimelineControls
@ -1986,7 +1991,7 @@ const App = memo(() => {
{wheelTunerVisible && ( {wheelTunerVisible && (
<div style={{ display: 'flex', alignItems: 'center', background: 'white', color: 'black', padding: 10, margin: 10, borderRadius: 10, width: '100%', maxWidth: 500, position: 'fixed', left: 0, bottom: bottomBarHeight, zIndex: 10 }}> <div style={{ display: 'flex', alignItems: 'center', background: 'white', color: 'black', padding: 10, margin: 10, borderRadius: 10, width: '100%', maxWidth: 500, position: 'fixed', left: 0, bottom: bottomBarHeight, zIndex: 10 }}>
{t('Scroll sensitivity')} {t('Timeline trackpad/wheel sensitivity')}
<input style={{ flexGrow: 1 }} type="range" min="0" max="1000" step="1" value={wheelSensitivity * 1000} onChange={e => setWheelSensitivity(e.target.value / 1000)} /> <input style={{ flexGrow: 1 }} type="range" min="0" max="1000" step="1" value={wheelSensitivity * 1000} onChange={e => setWheelSensitivity(e.target.value / 1000)} />
<Button height={20} intent="success" onClick={() => setWheelTunerVisible(false)}>{t('Done')}</Button> <Button height={20} intent="success" onClick={() => setWheelTunerVisible(false)}>{t('Done')}</Button>
</div> </div>

@ -7,6 +7,7 @@ const Settings = memo(({
changeOutDir, customOutDir, autoMerge, setAutoMerge, keyframeCut, setKeyframeCut, invertCutSegments, setInvertCutSegments, changeOutDir, customOutDir, autoMerge, setAutoMerge, keyframeCut, setKeyframeCut, invertCutSegments, setInvertCutSegments,
autoSaveProjectFile, setAutoSaveProjectFile, timecodeShowFrames, setTimecodeShowFrames, askBeforeClose, setAskBeforeClose, autoSaveProjectFile, setAutoSaveProjectFile, timecodeShowFrames, setTimecodeShowFrames, askBeforeClose, setAskBeforeClose,
renderOutFmt, AutoExportToggler, renderCaptureFormatButton, onWheelTunerRequested, language, setLanguage, renderOutFmt, AutoExportToggler, renderCaptureFormatButton, onWheelTunerRequested, language, setLanguage,
invertTimelineScroll, setInvertTimelineScroll,
}) => { }) => {
const { t } = useTranslation(); const { t } = useTranslation();
@ -137,12 +138,23 @@ const Settings = memo(({
</Row> </Row>
<Row> <Row>
<KeyCell>{t('Scroll/wheel sensitivity')}</KeyCell> <KeyCell>{t('Timeline trackpad/wheel sensitivity')}</KeyCell>
<Table.TextCell> <Table.TextCell>
<Button onClick={onWheelTunerRequested}>{t('Change sensitivity')}</Button> <Button onClick={onWheelTunerRequested}>{t('Change sensitivity')}</Button>
</Table.TextCell> </Table.TextCell>
</Row> </Row>
<Row>
<KeyCell>{t('Invert timeline trackpad/wheel direction?')}</KeyCell>
<Table.TextCell>
<Checkbox
label={t('Invert direction')}
checked={invertTimelineScroll}
onChange={e => setInvertTimelineScroll(e.target.checked)}
/>
</Table.TextCell>
</Row>
<Row> <Row>
<KeyCell>{t('Ask for confirmation when closing app or file?')}</KeyCell> <KeyCell>{t('Ask for confirmation when closing app or file?')}</KeyCell>
<Table.TextCell> <Table.TextCell>

@ -44,6 +44,7 @@ const Timeline = memo(({
setCurrentSegIndex, currentSegIndexSafe, invertCutSegments, inverseCutSegments, formatTimecode, setCurrentSegIndex, currentSegIndexSafe, invertCutSegments, inverseCutSegments, formatTimecode,
waveform, shouldShowWaveform, shouldShowKeyframes, timelineHeight, thumbnails, waveform, shouldShowWaveform, shouldShowKeyframes, timelineHeight, thumbnails,
onZoomWindowStartTimeChange, waveformEnabled, thumbnailsEnabled, wheelSensitivity, onZoomWindowStartTimeChange, waveformEnabled, thumbnailsEnabled, wheelSensitivity,
invertTimelineScroll,
}) => { }) => {
const { t } = useTranslation(); const { t } = useTranslation();
@ -150,12 +151,16 @@ const Timeline = memo(({
const onWheel = useCallback((e) => { const onWheel = useCallback((e) => {
const { pixelX, pixelY } = normalizeWheel(e); const { pixelX, pixelY } = normalizeWheel(e);
// console.log({ spinX, spinY, pixelX, pixelY }); // console.log({ spinX, spinY, pixelX, pixelY });
const seekDirection = invertTimelineScroll ? 1 : -1;
const zoomDirection = invertTimelineScroll ? -1 : 1;
if (e.ctrlKey) { if (e.ctrlKey) {
zoomRel(-pixelY * wheelSensitivity * 0.4); zoomRel(zoomDirection * (pixelY) * wheelSensitivity * 0.4);
} else { } else {
seekRel((pixelX + pixelY) * wheelSensitivity * 0.2); seekRel(seekDirection * (pixelX + pixelY) * wheelSensitivity * 0.2);
} }
}, [seekRel, zoomRel, wheelSensitivity]); }, [seekRel, zoomRel, wheelSensitivity, invertTimelineScroll]);
return ( return (
<Hammer <Hammer

Loading…
Cancel
Save