Skip to content

Commit 4f3a718

Browse files
author
Conrad Chan
authored
feat(highlightlistener): Avoid get selection race (#566)
1 parent a5fcff9 commit 4f3a718

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

src/highlight/HighlightListener.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,10 @@ export default class HighlightListener {
7575
return;
7676
}
7777

78-
this.isMouseSelecting = false;
79-
80-
this.selectionChangeTimer = window.setTimeout(this.setSelection, this.selectionChangeDelay);
78+
this.selectionChangeTimer = window.setTimeout(() => {
79+
this.setSelection();
80+
this.isMouseSelecting = false;
81+
}, this.selectionChangeDelay);
8182
};
8283

8384
handleSelectionChange = (): void => {

src/highlight/__tests__/HighlightListener-test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ describe('HighlightListener', () => {
105105
});
106106
});
107107

108-
describe('handleMouseDown', () => {
108+
describe('handleMouseDown()', () => {
109109
test('should clear timeout and selection', () => {
110110
highlightListener.selectionChangeTimer = 1;
111111

@@ -130,11 +130,12 @@ describe('HighlightListener', () => {
130130

131131
highlightListener.handleMouseUp();
132132

133-
expect(highlightListener.isMouseSelecting).toBe(false);
133+
expect(highlightListener.isMouseSelecting).toBe(true);
134134

135135
jest.runAllTimers();
136136

137137
expect(highlightListener.setSelection).toHaveBeenCalled();
138+
expect(highlightListener.isMouseSelecting).toBe(false);
138139
});
139140

140141
test('should do nothing if select not using mouse', () => {

0 commit comments

Comments
 (0)