Skip to content

Commit

Permalink
Merge pull request #780 from mofux/mousedown_counter
Browse files Browse the repository at this point in the history
[SelectionManager] Use event.detail instead for counting the mousedown event
  • Loading branch information
Tyriar authored Jul 13, 2017
2 parents 01453e9 + d3fe3a1 commit 25fc01c
Showing 1 changed file with 3 additions and 49 deletions.
52 changes: 3 additions & 49 deletions src/SelectionManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,23 +86,6 @@ export class SelectionManager extends EventEmitter {
*/
private _dragScrollAmount: number;

/**
* The last time the mousedown event fired, this is used to track double and
* triple clicks.
*/
private _lastMouseDownTime: number;

/**
* The last position the mouse was clicked [x, y].
*/
private _lastMousePosition: [number, number];

/**
* The number of clicks of the mousedown event. This is used to keep track of
* double and triple clicks.
*/
private _clickCount: number;

/**
* The current selection mode.
*/
Expand Down Expand Up @@ -135,7 +118,6 @@ export class SelectionManager extends EventEmitter {
this.enable();

this._model = new SelectionModel(_terminal);
this._lastMouseDownTime = 0;
this._activeSelectionMode = SelectionMode.NORMAL;
}

Expand Down Expand Up @@ -396,16 +378,14 @@ export class SelectionManager extends EventEmitter {
// Reset drag scroll state
this._dragScrollAmount = 0;

this._setMouseClickCount(event);

if (event.shiftKey) {
this._onShiftClick(event);
} else {
if (this._clickCount === 1) {
if (event.detail === 1) {
this._onSingleClick(event);
} else if (this._clickCount === 2) {
} else if (event.detail === 2) {
this._onDoubleClick(event);
} else if (this._clickCount === 3) {
} else if (event.detail === 3) {
this._onTripleClick(event);
}
}
Expand Down Expand Up @@ -491,32 +471,6 @@ export class SelectionManager extends EventEmitter {
}
}

/**
* Sets the number of clicks for the current mousedown event based on the time
* and position of the last mousedown event.
* @param event The mouse event.
*/
private _setMouseClickCount(event: MouseEvent): void {
let currentTime = (new Date()).getTime();
if (currentTime - this._lastMouseDownTime > CLEAR_MOUSE_DOWN_TIME || this._distanceFromLastMousePosition(event) > CLEAR_MOUSE_DISTANCE) {
this._clickCount = 0;
}
this._lastMouseDownTime = currentTime;
this._lastMousePosition = [event.pageX, event.pageY];
this._clickCount++;
}

/**
* Gets the maximum number of pixels in each direction the mouse has moved.
* @param event The mouse event.
*/
private _distanceFromLastMousePosition(event: MouseEvent): number {
const result = Math.max(
Math.abs(this._lastMousePosition[0] - event.pageX),
Math.abs(this._lastMousePosition[1] - event.pageY));
return result;
}

/**
* Handles the mousemove event when the mouse button is down, recording the
* end of the selection and refreshing the selection.
Expand Down

0 comments on commit 25fc01c

Please sign in to comment.