feat: stop event propagation when key handled (#5091)

* feat: stop event propagation when key handled

* don't handle s/g shortcuts if cmd/ctrl/alt pressed
This commit is contained in:
David Luzar 2022-04-24 18:29:38 +02:00 committed by GitHub
parent 9902092fd1
commit 832b88249c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 1 deletions

View File

@ -117,6 +117,7 @@ export class ActionManager {
trackAction(action, "keyboard", appState, elements, this.app, null); trackAction(action, "keyboard", appState, elements, this.app, null);
event.preventDefault(); event.preventDefault();
event.stopPropagation();
this.updater(data[0].perform(elements, appState, value, this.app)); this.updater(data[0].perform(elements, appState, value, this.app));
return true; return true;
} }

View File

@ -1272,6 +1272,7 @@ class App extends React.Component<AppProps, AppState> {
} }
this.cutAll(); this.cutAll();
event.preventDefault(); event.preventDefault();
event.stopPropagation();
}); });
private onCopy = withBatchedUpdates((event: ClipboardEvent) => { private onCopy = withBatchedUpdates((event: ClipboardEvent) => {
@ -1283,6 +1284,7 @@ class App extends React.Component<AppProps, AppState> {
} }
this.copyAll(); this.copyAll();
event.preventDefault(); event.preventDefault();
event.stopPropagation();
}); });
private cutAll = () => { private cutAll = () => {
@ -1874,8 +1876,10 @@ class App extends React.Component<AppProps, AppState> {
); );
} }
this.setActiveTool({ ...this.state.activeTool, type: shape }); this.setActiveTool({ ...this.state.activeTool, type: shape });
event.stopPropagation();
} else if (event.key === KEYS.Q) { } else if (event.key === KEYS.Q) {
this.toggleLock("keyboard"); this.toggleLock("keyboard");
event.stopPropagation();
} }
} }
if (event.key === KEYS.SPACE && gesture.pointers.size === 0) { if (event.key === KEYS.SPACE && gesture.pointers.size === 0) {
@ -1884,7 +1888,11 @@ class App extends React.Component<AppProps, AppState> {
event.preventDefault(); event.preventDefault();
} }
if (event.key === KEYS.G || event.key === KEYS.S) { if (
(event.key === KEYS.G || event.key === KEYS.S) &&
!event.altKey &&
!event[KEYS.CTRL_OR_CMD]
) {
const selectedElements = getSelectedElements( const selectedElements = getSelectedElements(
this.scene.getElements(), this.scene.getElements(),
this.state, this.state,
@ -1902,9 +1910,11 @@ class App extends React.Component<AppProps, AppState> {
selectedElements.some((element) => hasBackground(element.type))) selectedElements.some((element) => hasBackground(element.type)))
) { ) {
this.setState({ openPopup: "backgroundColorPicker" }); this.setState({ openPopup: "backgroundColorPicker" });
event.stopPropagation();
} }
if (event.key === KEYS.S) { if (event.key === KEYS.S) {
this.setState({ openPopup: "strokeColorPicker" }); this.setState({ openPopup: "strokeColorPicker" });
event.stopPropagation();
} }
} }
}, },