Skip to content
Snippets Groups Projects
Commit 1f4df4a7 authored by Maximilian Giller's avatar Maximilian Giller :squid:
Browse files

Only triggering delete on shortcut if 2d-graph in focus

parent ab1d7a6f
No related branches found
No related tags found
1 merge request!2Implemented editor in the react framework
Pipeline #56899 passed
...@@ -36,6 +36,7 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> { ...@@ -36,6 +36,7 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> {
private defaultWarmupTicks = 100; private defaultWarmupTicks = 100;
private warmupTicks = 100; private warmupTicks = 100;
private renderer: any; private renderer: any;
private graphInFocus = false;
constructor(props: propTypes) { constructor(props: propTypes) {
super(props); super(props);
...@@ -113,6 +114,7 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> { ...@@ -113,6 +114,7 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> {
// Subscribe to global key-press events // Subscribe to global key-press events
document.onkeydown = this.handleKeyDown; document.onkeydown = this.handleKeyDown;
document.onkeyup = this.handleKeyUp; document.onkeyup = this.handleKeyUp;
document.onmousedown = this.handleMouseDown;
return true; return true;
} }
...@@ -128,17 +130,22 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> { ...@@ -128,17 +130,22 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> {
}); });
// Key events // Key events
if ( if (key === "Escape") {
key === "Escape" &&
document.activeElement === this.renderer.current
) {
// Only delete if 2d-graph is the focused element // Only delete if 2d-graph is the focused element
this.selectNode(undefined); this.selectNode(undefined);
} else if (key === "Delete" && this.state.selectedNode !== undefined) { } else if (
key === "Delete" &&
this.state.selectedNode !== undefined &&
this.graphInFocus
) {
this.state.selectedNode.delete(); this.state.selectedNode.delete();
} }
} }
private handleMouseDown(event: any) {
this.graphInFocus = false;
}
private handleKeyUp(event: KeyboardEvent) { private handleKeyUp(event: KeyboardEvent) {
const key: string = event.key; const key: string = event.key;
...@@ -155,6 +162,8 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> { ...@@ -155,6 +162,8 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> {
* @param event Click event. * @param event Click event.
*/ */
private handleBackgroundClick(event: any, position: clickPosition) { private handleBackgroundClick(event: any, position: clickPosition) {
this.graphInFocus = true;
// Is there really no node there? Trying to prevent small error, where this event is triggered, even if there is a node. // Is there really no node there? Trying to prevent small error, where this event is triggered, even if there is a node.
const placeholderNode: Node = { const placeholderNode: Node = {
id: undefined, id: undefined,
...@@ -240,6 +249,8 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> { ...@@ -240,6 +249,8 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> {
} }
private handleNodeClick(node: Node) { private handleNodeClick(node: Node) {
this.graphInFocus = true;
if (this.state.keys["Shift"]) { if (this.state.keys["Shift"]) {
// Connect two nodes when second select while shift is pressed // Connect two nodes when second select while shift is pressed
if (this.state.selectedNode == undefined) { if (this.state.selectedNode == undefined) {
...@@ -355,6 +366,7 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> { ...@@ -355,6 +366,7 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> {
} }
private handleNodeDrag(node: Node, translate: positionTranslate) { private handleNodeDrag(node: Node, translate: positionTranslate) {
this.graphInFocus = true;
this.selectNode(node); this.selectNode(node);
// Should run connect logic? // Should run connect logic?
...@@ -384,6 +396,8 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> { ...@@ -384,6 +396,8 @@ export class Editor extends React.PureComponent<propTypes, stateTypes> {
} }
private handleLinkClick(link: Link) { private handleLinkClick(link: Link) {
this.graphInFocus = true;
if (this.state.keys["Control"]) { if (this.state.keys["Control"]) {
// Delete link when control is pressed // Delete link when control is pressed
link.delete(); link.delete();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment