Skip to content

Commit

Permalink
fix: resolve continue click distance tolerance
Browse files Browse the repository at this point in the history
  • Loading branch information
F-star committed Jun 23, 2024
1 parent e0a872b commit 2888208
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 11 deletions.
23 changes: 13 additions & 10 deletions packages/core/src/host_event_manager/host_event_manager.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { EventEmitter } from '@suika/common';
import { type IPoint } from '@suika/geo';
import { distance, type IPoint } from '@suika/geo';

import { type Editor } from '../editor';
import { CommandKeyBinding } from './command_key_binding';
Expand Down Expand Up @@ -86,26 +86,29 @@ export class HostEventManager {

private bindMouseRecordEvent() {
let pointerDownTimeStamp = -Infinity;
let lastPointerDownPos: IPoint = { x: -9999, y: -9999 };
let lastPointerDownPos: IPoint = { x: -99, y: -99 };

const handlePointerEvent = (event: PointerEvent) => {
// mouse left
if (event.button === 0 && event.type === 'pointerdown') {
const now = new Date().getTime();
const newPos = {
x: event.pageX,
y: event.pageY,
};

const interval = now - pointerDownTimeStamp;
const clickDistanceDiff = distance(newPos, lastPointerDownPos);
if (
now - pointerDownTimeStamp <
this.editor.setting.get('continueSelectMaxGap') &&
event.pageX === lastPointerDownPos.x &&
event.pageY === lastPointerDownPos.y
interval < this.editor.setting.get('continueClickMaxGap') &&
clickDistanceDiff <
this.editor.setting.get('continueClickDistanceTol')
) {
pointerDownTimeStamp = now;
this.eventEmitter.emit('continueClick');
}
pointerDownTimeStamp = now;
lastPointerDownPos = {
x: event.pageX,
y: event.pageY,
};
lastPointerDownPos = newPos;
}

// mouse middle
Expand Down
3 changes: 2 additions & 1 deletion packages/core/src/setting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,8 @@ export class Setting {

flipObjectsWhileResizing: true,

continueSelectMaxGap: 350, // millisecond
continueClickMaxGap: 350, // millisecond
continueClickDistanceTol: 5,
};
toggle<K extends BooleanKeys<Setting['value']>>(key: K) {
const value = this.value[key];
Expand Down

0 comments on commit 2888208

Please sign in to comment.