2
0
Эх сурвалжийг харах

Merge pull request #99471 from Arnklit/fix_undo_redo_for_texture_region_editor

Fix undo redo for the texture region editor
Rémi Verschelde 8 сар өмнө
parent
commit
55a3c6ba2b

+ 22 - 0
editor/plugins/texture_region_editor_plugin.cpp

@@ -1107,12 +1107,34 @@ Vector2 TextureRegionEditor::snap_point(Vector2 p_target) const {
 	return p_target;
 }
 
+void TextureRegionEditor::shortcut_input(const Ref<InputEvent> &p_event) {
+	const Ref<InputEventKey> k = p_event;
+	if (k.is_valid() && k->is_pressed()) {
+		bool handled = false;
+
+		if (ED_IS_SHORTCUT("ui_undo", p_event)) {
+			EditorNode::get_singleton()->undo();
+			handled = true;
+		}
+
+		if (ED_IS_SHORTCUT("ui_redo", p_event)) {
+			EditorNode::get_singleton()->redo();
+			handled = true;
+		}
+
+		if (handled) {
+			set_input_as_handled();
+		}
+	}
+}
+
 void TextureRegionEditor::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("_update_rect"), &TextureRegionEditor::_update_rect);
 }
 
 TextureRegionEditor::TextureRegionEditor() {
 	set_title(TTR("Region Editor"));
+	set_process_shortcut_input(true);
 	set_ok_button_text(TTR("Close"));
 
 	// A power-of-two value works better as a default grid size.

+ 1 - 0
editor/plugins/texture_region_editor_plugin.h

@@ -141,6 +141,7 @@ class TextureRegionEditor : public AcceptDialog {
 
 protected:
 	void _notification(int p_what);
+	virtual void shortcut_input(const Ref<InputEvent> &p_event) override;
 	static void _bind_methods();
 
 	void _texture_preview_draw();