Skip to content

Commit a732419

Browse files
dagatsoinerictraut
authored andcommitted
[FIX] Web mobile: can't press after a long press (#1081)
* Web mobile: stop propagation of onMouseUp after a longPress * fix regression on desktop
1 parent 9ca1af7 commit a732419

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

src/web/Button.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export class Button extends ButtonBase {
6060

6161
private _mountedButton: HTMLButtonElement | null = null;
6262
private _lastMouseDownEvent: Types.SyntheticEvent | undefined;
63+
private _ignoreMouseUp = false;
6364
private _ignoreClick = false;
6465
private _longPressTimer: number | undefined;
6566
private _isMouseOver = false;
@@ -210,13 +211,21 @@ export class Button extends ButtonBase {
210211
if (this.props.onLongPress) {
211212
// lastMouseDownEvent can never be undefined at this point
212213
this.props.onLongPress(this._lastMouseDownEvent!);
214+
this._ignoreMouseUp = true;
213215
this._ignoreClick = true;
214216
}
215217
}, this.props.delayLongPress || _longPressTime);
216218
}
217219
}
218220

219-
private _onMouseUp = (e: Types.SyntheticEvent) => {
221+
private _onMouseUp = (e: Types.SyntheticEvent | Types.TouchEvent) => {
222+
if (this._ignoreMouseUp) {
223+
e.stopPropagation();
224+
// Touch event won't trigger onClick when a long press is released. So we reset the ignore flag here.
225+
if ('touches' in e) {
226+
this._ignoreClick = false;
227+
}
228+
}
220229
if (this.props.onPressOut) {
221230
this.props.onPressOut(e);
222231
}

0 commit comments

Comments
 (0)