Browse Source

[shgraph] Space open add menu, esc closes

Clément Espeute 1 year ago
parent
commit
ffca9c903f
3 changed files with 22 additions and 2 deletions
  1. 1 0
      bin/defaultProps.json
  2. 20 2
      hide/view/GraphEditor.hx
  3. 1 0
      hide/view/GraphInterface.hx

+ 1 - 0
bin/defaultProps.json

@@ -89,6 +89,7 @@
 
 	"key.shadergraph.hide" : "H",
 	"key.shadergraph.comment" : "C",
+	"key.graph.openAddMenu" : "Space",
 
 
 

+ 20 - 2
hide/view/GraphEditor.hx

@@ -145,6 +145,8 @@ class GraphEditor extends hide.comp.Component {
 		keys.register("shadergraph.comment", commentFromSelection);
 		keys.register("duplicateInPlace", duplicateSelection);
 		keys.register("duplicate", duplicateSelection);
+		keys.register("graph.openAddMenu", openAddMenu.bind(null,null));
+		keys.register("cancel", cancelAll);
 
 		var miniPreviews = new Element('<div class="mini-preview"></div>');
 		heapsScene.prepend(miniPreviews);
@@ -180,7 +182,13 @@ class GraphEditor extends hide.comp.Component {
 			}
 
 			if (e.button == 2) {
-				openAddMenu();
+				if (addMenu?.is(":visible") ?? false) {
+					closeAddMenu();
+					cleanupCreateEdge();
+				}
+				else {
+					openAddMenu();
+				}
 				e.preventDefault();
 				e.stopPropagation();
 			}
@@ -260,6 +268,11 @@ class GraphEditor extends hide.comp.Component {
 		reloadInternal();
 	}
 
+	public function cancelAll() {
+		closeAddMenu();
+		cleanupCreateEdge();
+	}
+
 	var reloadQueued = false;
 	public function reload() {
 		reloadQueued = true;
@@ -549,6 +562,11 @@ class GraphEditor extends hide.comp.Component {
 		input.focus();
 		var divs = new Element("#results > div");
 		input.on("keydown", function(ev) {
+			if (ev.key == "Escape") {
+				cancelAll();
+				ev.stopPropagation();
+				ev.preventDefault();
+			}
 			if (ev.keyCode == 38 || ev.keyCode == 40) {
 				ev.stopPropagation();
 				ev.preventDefault();
@@ -680,7 +698,7 @@ class GraphEditor extends hide.comp.Component {
 	function closeAddMenu() {
 		if (addMenu != null) {
 			addMenu.hide();
-			//heapsScene.focus();
+			heapsScene.focus();
 		}
 	}
 

+ 1 - 0
hide/view/GraphInterface.hx

@@ -104,5 +104,6 @@ interface IGraphEditor {
 
     public function addEdge(edge : Edge) : Void;
     public function removeEdge(nodeToId: Int, inputToId : Int) : Void;
+
     public function getUndo() : hide.ui.UndoHistory;
 }