Skip to content

Commit

Permalink
Merge pull request #37412 from KoBeWi/great_tree_escape
Browse files Browse the repository at this point in the history
Properly handle node remove via undo
  • Loading branch information
akien-mga authored Mar 30, 2020
2 parents fafb0ba + 37ffb40 commit 0168709
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 0 deletions.
21 changes: 21 additions & 0 deletions editor/plugins/collision_shape_2d_editor_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,13 @@
#include "scene/resources/rectangle_shape_2d.h"
#include "scene/resources/segment_shape_2d.h"

void CollisionShape2DEditor::_node_removed(Node *p_node) {

if (p_node == node) {
node = NULL;
}
}

Variant CollisionShape2DEditor::get_handle_value(int idx) const {

switch (shape_type) {
Expand Down Expand Up @@ -525,6 +532,20 @@ void CollisionShape2DEditor::forward_canvas_draw_over_viewport(Control *p_overla
}
}

void CollisionShape2DEditor::_notification(int p_what) {

switch (p_what) {

case NOTIFICATION_ENTER_TREE: {
get_tree()->connect("node_removed", callable_mp(this, &CollisionShape2DEditor::_node_removed));
} break;

case NOTIFICATION_EXIT_TREE: {
get_tree()->disconnect("node_removed", callable_mp(this, &CollisionShape2DEditor::_node_removed));
} break;
}
}

void CollisionShape2DEditor::edit(Node *p_node) {

if (!canvas_item_editor) {
Expand Down
2 changes: 2 additions & 0 deletions editor/plugins/collision_shape_2d_editor_plugin.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ class CollisionShape2DEditor : public Control {
void _get_current_shape_type();

protected:
void _notification(int p_what);
void _node_removed(Node *p_node);
static void _bind_methods();

public:
Expand Down
12 changes: 12 additions & 0 deletions editor/plugins/tile_map_editor_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@
#include "editor/editor_settings.h"
#include "scene/gui/split_container.h"

void TileMapEditor::_node_removed(Node *p_node) {

if (p_node == node) {
node = NULL;
}
}

void TileMapEditor::_notification(int p_what) {

switch (p_what) {
Expand All @@ -60,6 +67,7 @@ void TileMapEditor::_notification(int p_what) {

case NOTIFICATION_ENTER_TREE: {

get_tree()->connect("node_removed", callable_mp(this, &TileMapEditor::_node_removed));
paint_button->set_icon(get_theme_icon("Edit", "EditorIcons"));
bucket_fill_button->set_icon(get_theme_icon("Bucket", "EditorIcons"));
picker_button->set_icon(get_theme_icon("ColorPick", "EditorIcons"));
Expand All @@ -80,6 +88,10 @@ void TileMapEditor::_notification(int p_what) {
p->set_item_icon(p->get_item_index(OPTION_ERASE_SELECTION), get_theme_icon("Remove", "EditorIcons"));

} break;

case NOTIFICATION_EXIT_TREE: {
get_tree()->disconnect("node_removed", callable_mp(this, &TileMapEditor::_node_removed));
} break;
}
}

Expand Down
1 change: 1 addition & 0 deletions editor/plugins/tile_map_editor_plugin.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ class TileMapEditor : public VBoxContainer {

protected:
void _notification(int p_what);
void _node_removed(Node *p_node);
static void _bind_methods();
CellOp _get_op_from_cell(const Point2i &p_pos);

Expand Down

0 comments on commit 0168709

Please sign in to comment.