|
@@ -832,6 +832,8 @@ const ELEMENT_TRANSLATE_AMOUNT = 1;
|
|
|
let lastCanvasWidth = -1;
|
|
|
let lastCanvasHeight = -1;
|
|
|
|
|
|
+let lastMouseUp: ((e: any) => void) | null = null;
|
|
|
+
|
|
|
class App extends React.Component<{}, AppState> {
|
|
|
public componentDidMount() {
|
|
|
document.addEventListener("keydown", this.onKeyDown, false);
|
|
@@ -1157,6 +1159,12 @@ class App extends React.Component<{}, AppState> {
|
|
|
}
|
|
|
}}
|
|
|
onMouseDown={e => {
|
|
|
+ if (lastMouseUp !== null) {
|
|
|
+ // Unfortunately, sometimes we don't get a mouseup after a mousedown,
|
|
|
+ // this can happen when a contextual menu or alert is triggered. In order to avoid
|
|
|
+ // being in a weird state, we clean up on the next mousedown
|
|
|
+ lastMouseUp(e);
|
|
|
+ }
|
|
|
// only handle left mouse button
|
|
|
if (e.button !== 0) return;
|
|
|
// fixes mousemove causing selection of UI texts #32
|
|
@@ -1398,6 +1406,7 @@ class App extends React.Component<{}, AppState> {
|
|
|
const onMouseUp = (e: MouseEvent) => {
|
|
|
const { draggingElement, elementType } = this.state;
|
|
|
|
|
|
+ lastMouseUp = null;
|
|
|
window.removeEventListener("mousemove", onMouseMove);
|
|
|
window.removeEventListener("mouseup", onMouseUp);
|
|
|
|
|
@@ -1426,6 +1435,8 @@ class App extends React.Component<{}, AppState> {
|
|
|
this.forceUpdate();
|
|
|
};
|
|
|
|
|
|
+ lastMouseUp = onMouseUp;
|
|
|
+
|
|
|
window.addEventListener("mousemove", onMouseMove);
|
|
|
window.addEventListener("mouseup", onMouseUp);
|
|
|
|