Browse Source

Better handling for closing scene editor resource (closes #1167)

Josh Engebretson 9 years ago
parent
commit
a02e4366aa

+ 23 - 10
Script/AtomicEditor/ui/frames/HierarchyFrame.ts

@@ -70,6 +70,7 @@ class HierarchyFrame extends Atomic.UIWidget {
 
 
         this.subscribeToEvent(this, "WidgetEvent", (data) => this.handleWidgetEvent(data));
         this.subscribeToEvent(this, "WidgetEvent", (data) => this.handleWidgetEvent(data));
 
 
+        this.subscribeToEvent(EditorEvents.EditorResourceClose, (data) => this.handleEditorResourceClosed(data));
         this.subscribeToEvent(EditorEvents.ActiveSceneEditorChange, (data) => this.handleActiveSceneEditorChanged(data));
         this.subscribeToEvent(EditorEvents.ActiveSceneEditorChange, (data) => this.handleActiveSceneEditorChanged(data));
 
 
         // on mouse up clear the list's drag object
         // on mouse up clear the list's drag object
@@ -191,19 +192,17 @@ class HierarchyFrame extends Atomic.UIWidget {
 
 
     }
     }
 
 
-    handleActiveSceneEditorChanged(event: EditorEvents.ActiveSceneEditorChangeEvent) {
-
-        if (this.scene)
-            this.unsubscribeFromEvents(this.scene);
-
-        this.sceneEditor = null;
-        this.scene = null;
+    setSceneEditor(sceneEditor:Editor.SceneEditor3D) {
 
 
-        if (!event.sceneEditor)
+        if (this.sceneEditor == sceneEditor) {
             return;
             return;
+        }
 
 
-        this.sceneEditor = event.sceneEditor;
-        this.scene = event.sceneEditor.scene;
+        if (this.scene)
+            this.unsubscribeFromEvents(this.scene);
+        
+        this.sceneEditor = sceneEditor;
+        this.scene = sceneEditor == null ? null : sceneEditor.scene;
 
 
         this.populate();
         this.populate();
 
 
@@ -234,6 +233,20 @@ class HierarchyFrame extends Atomic.UIWidget {
 
 
 
 
         }
         }
+        
+    }
+
+    handleEditorResourceClosed(event) {
+
+        if (this.sceneEditor == event.editor) {
+            this.setSceneEditor(null);
+        }
+
+    }
+    
+    handleActiveSceneEditorChanged(event: EditorEvents.ActiveSceneEditorChangeEvent) {
+
+        this.setSceneEditor(event.sceneEditor);
 
 
     }
     }
 
 

+ 0 - 7
Script/AtomicEditor/ui/frames/ResourceFrame.ts

@@ -167,13 +167,6 @@ class ResourceFrame extends ScriptWidget {
 
 
         var closedIndex = editors.indexOf(editor.fullPath);
         var closedIndex = editors.indexOf(editor.fullPath);
 
 
-        if (editor.typeName == "SceneEditor3D") {
-
-            this.sendEvent(EditorEvents.ActiveSceneEditorChange, { sceneEditor: (<Editor.SceneEditor3D> null) });
-
-        }
-
-
         // remove from lookup
         // remove from lookup
         delete this.editors[editor.fullPath];
         delete this.editors[editor.fullPath];