Skip to content

Commit

Permalink
Merge pull request godotengine#44892 from KoBeWi/gentle_drag
Browse files Browse the repository at this point in the history
Commit CanvasItem state only if it changed
  • Loading branch information
akien-mga authored Jan 5, 2021
2 parents 47353fb + 036f6a3 commit 0abd7e7
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion editor/plugins/canvas_item_editor_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -963,8 +963,23 @@ void CanvasItemEditor::_restore_canvas_item_state(List<CanvasItem *> p_canvas_it
}

void CanvasItemEditor::_commit_canvas_item_state(List<CanvasItem *> p_canvas_items, String action_name, bool commit_bones) {
undo_redo->create_action(action_name);
List<CanvasItem *> modified_canvas_items;
for (List<CanvasItem *>::Element *E = p_canvas_items.front(); E; E = E->next()) {
CanvasItem *canvas_item = E->get();
Dictionary old_state = editor_selection->get_node_editor_data<CanvasItemEditorSelectedItem>(canvas_item)->undo_state;
Dictionary new_state = canvas_item->_edit_get_state();

if (old_state.hash() != new_state.hash()) {
modified_canvas_items.push_back(canvas_item);
}
}

if (modified_canvas_items.is_empty()) {
return;
}

undo_redo->create_action(action_name);
for (List<CanvasItem *>::Element *E = modified_canvas_items.front(); E; E = E->next()) {
CanvasItem *canvas_item = E->get();
CanvasItemEditorSelectedItem *se = editor_selection->get_node_editor_data<CanvasItemEditorSelectedItem>(canvas_item);
undo_redo->add_do_method(canvas_item, "_edit_set_state", canvas_item->_edit_get_state());
Expand Down

0 comments on commit 0abd7e7

Please sign in to comment.