trethaller 7 年之前
父節點
當前提交
94714ffca2
共有 3 個文件被更改,包括 24 次插入4 次删除
  1. 12 1
      hide/comp/IconTree.hx
  2. 2 1
      hide/ui/Ide.hx
  3. 10 2
      hide/view/l3d/Level3D.hx

+ 12 - 1
hide/comp/IconTree.hx

@@ -51,6 +51,9 @@ class IconTree<T:{}> extends Component {
 	public dynamic function onMove( e : T, to : T, index : Int ) {
 	}
 
+	public dynamic function applyStyle( e : T, element : Element ) {
+	}
+
 	function makeContent(parent:IconTreeItem<T>) {
 		var content : Array<IconTreeItem<T>> = get(parent == null ? null : parent.value);
 		for( c in content ) {
@@ -99,7 +102,7 @@ class IconTree<T:{}> extends Component {
 					callb.call(this, makeContent(obj.parent == null ? null : map.get(obj.id)));
 				}
 			},
-			plugins : [ "wholerow", "dnd" ],
+			plugins : [ "wholerow", "dnd", "changed" ],
 		});
 		root.on("click.jstree", function (event) {
 			var node = new Element(event.target).closest("li");
@@ -133,6 +136,14 @@ class IconTree<T:{}> extends Component {
 		root.on("move_node.jstree", function(event, e) {
 			onMove(map.get(e.node.id).value, e.parent == "#" ? null : map.get(e.parent).value, e.position);
 		});
+		root.on('changed.jstree', function (e, data) {
+			var nodes: Array<Dynamic> = data.changed.deselected;
+			for(id in nodes) {
+				var item = map.get(id).value;
+				var el = getElement(item);
+				applyStyle(item, el);
+			}
+		});
 	}
 
 	function getRev( o : T ) {

+ 2 - 1
hide/ui/Ide.hx

@@ -74,7 +74,8 @@ class Ide {
 					return;
 			window.close(true);
 		});
-
+		window.on('blur', hxd.Key.initialize);
+		
 		// handle commandline parameters
 		nw.App.on("open", function(cmd) {
 			~/"([^"]+)"/g.map(cmd, function(r) {

+ 10 - 2
hide/view/l3d/Level3D.hx

@@ -469,6 +469,7 @@ class Level3D extends FileView {
 			return true;
 		};
 		tree.onMove = reparentElement;
+		tree.applyStyle = updateTreeStyle;
 
 		refresh();
 	}
@@ -888,8 +889,7 @@ class Level3D extends FileView {
 		}
 	}
 
-	public function onPrefabChange(p: PrefabElement) {
-		var el = tree.getElement(p);
+	function updateTreeStyle(p: PrefabElement, el: Element) {
 		var obj3d  = p.to(Object3D);
 		if(obj3d != null) {
 			if(obj3d.visible) {
@@ -920,7 +920,12 @@ class Level3D extends FileView {
 				else 
 					label.removeClass("locked");
 			}
+		}
+	}
 
+	public function onPrefabChange(p: PrefabElement) {
+		var layer = p.to(hide.prefab.l3d.Layer);
+		if(layer != null) {
 			var boxes = layer.getAll(hide.prefab.Box);
 			for(box in boxes) {
 				box.setColor(layer.color);
@@ -932,6 +937,9 @@ class Level3D extends FileView {
 				interactives.get(m).visible = !layer.locked;
 			}
 		}
+
+		var el = tree.getElement(p);
+		updateTreeStyle(p, el);
 	}
 
 	static function worldMat(obj: Object) {