瀏覽代碼

Merge pull request #2447 from TheHX/issue_1275

Fix crash after undo when editing Polygon2D (#1275)
Juan Linietsky 10 年之前
父節點
當前提交
2dac9ab2ef
共有 1 個文件被更改,包括 6 次插入5 次删除
  1. 6 5
      tools/editor/plugins/polygon_2d_editor_plugin.cpp

+ 6 - 5
tools/editor/plugins/polygon_2d_editor_plugin.cpp

@@ -54,6 +54,8 @@ void Polygon2DEditor::_notification(int p_what) {
 			b_snap_enable->set_icon( get_icon("Snap", "EditorIcons"));
 			uv_icon_zoom->set_texture( get_icon("Zoom", "EditorIcons"));
 
+			get_tree()->connect("node_removed", this, "_node_removed");
+
 		} break;
 		case NOTIFICATION_FIXED_PROCESS: {
 
@@ -65,8 +67,10 @@ void Polygon2DEditor::_notification(int p_what) {
 void Polygon2DEditor::_node_removed(Node *p_node) {
 
 	if(p_node==node) {
-		node=NULL;
+		edit(NULL);
 		hide();
+		
+		canvas_item_editor->get_viewport_control()->update();
 	}
 
 }
@@ -757,16 +761,13 @@ void Polygon2DEditor::edit(Node *p_collision_polygon) {
 		node=p_collision_polygon->cast_to<Polygon2D>();
 		if (!canvas_item_editor->get_viewport_control()->is_connected("draw",this,"_canvas_draw"))
 			canvas_item_editor->get_viewport_control()->connect("draw",this,"_canvas_draw");
-		node->connect("exit_tree",this,"_node_removed",varray(),CONNECT_ONESHOT);
+		
 		wip.clear();
 		wip_active=false;
 		edited_point=-1;
 
 	} else {
 
-		if (node)
-			node->disconnect("exit_tree",this,"_node_removed");
-
 		node=NULL;
 
 		if (canvas_item_editor->get_viewport_control()->is_connected("draw",this,"_canvas_draw"))