Fix missing undo/redo object and issue with removing actions
This commit is contained in:
parent
e780dc332a
commit
b5e205a57c
4 changed files with 7 additions and 4 deletions
|
@ -205,11 +205,12 @@ void OpenXRActionMapEditor::_on_remove_action_set(Object *p_action_set_editor) {
|
||||||
action_map->set_edited(true);
|
action_map->set_edited(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenXRActionMapEditor::_on_action_removed() {
|
void OpenXRActionMapEditor::_on_action_removed(Ref<OpenXRAction> p_action) {
|
||||||
for (int i = 0; i < tabs->get_tab_count(); i++) {
|
for (int i = 0; i < tabs->get_tab_count(); i++) {
|
||||||
// First tab won't be an interaction profile editor, but being thorough..
|
// First tab won't be an interaction profile editor, but being thorough..
|
||||||
OpenXRInteractionProfileEditorBase *interaction_profile_editor = Object::cast_to<OpenXRInteractionProfileEditorBase>(tabs->get_tab_control(i));
|
OpenXRInteractionProfileEditorBase *interaction_profile_editor = Object::cast_to<OpenXRInteractionProfileEditorBase>(tabs->get_tab_control(i));
|
||||||
if (interaction_profile_editor) {
|
if (interaction_profile_editor) {
|
||||||
|
interaction_profile_editor->remove_all_bindings_for_action(p_action);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@ private:
|
||||||
void _on_add_action_set();
|
void _on_add_action_set();
|
||||||
void _set_focus_on_action_set(OpenXRActionSetEditor *p_action_set_editor);
|
void _set_focus_on_action_set(OpenXRActionSetEditor *p_action_set_editor);
|
||||||
void _on_remove_action_set(Object *p_action_set_editor);
|
void _on_remove_action_set(Object *p_action_set_editor);
|
||||||
void _on_action_removed();
|
void _on_action_removed(Ref<OpenXRAction> p_action);
|
||||||
|
|
||||||
void _on_add_interaction_profile();
|
void _on_add_interaction_profile();
|
||||||
void _on_interaction_profile_selected(const String p_path);
|
void _on_interaction_profile_selected(const String p_path);
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
#include "openxr_action_set_editor.h"
|
#include "openxr_action_set_editor.h"
|
||||||
|
#include "editor/editor_node.h"
|
||||||
#include "openxr_action_editor.h"
|
#include "openxr_action_editor.h"
|
||||||
|
|
||||||
void OpenXRActionSetEditor::_bind_methods() {
|
void OpenXRActionSetEditor::_bind_methods() {
|
||||||
|
@ -211,6 +212,7 @@ void OpenXRActionSetEditor::set_focus_on_entry() {
|
||||||
}
|
}
|
||||||
|
|
||||||
OpenXRActionSetEditor::OpenXRActionSetEditor(Ref<OpenXRActionMap> p_action_map, Ref<OpenXRActionSet> p_action_set) {
|
OpenXRActionSetEditor::OpenXRActionSetEditor(Ref<OpenXRActionMap> p_action_map, Ref<OpenXRActionSet> p_action_set) {
|
||||||
|
undo_redo = EditorNode::get_undo_redo();
|
||||||
action_map = p_action_map;
|
action_map = p_action_map;
|
||||||
action_set = p_action_set;
|
action_set = p_action_set;
|
||||||
|
|
||||||
|
|
|
@ -124,8 +124,8 @@ void OpenXRInteractionProfileEditorBase::remove_all_bindings_for_action(Ref<Open
|
||||||
undo_redo->create_action(TTR("Remove action from interaction profile"));
|
undo_redo->create_action(TTR("Remove action from interaction profile"));
|
||||||
PackedStringArray paths = binding->get_paths();
|
PackedStringArray paths = binding->get_paths();
|
||||||
for (const String &path : paths) {
|
for (const String &path : paths) {
|
||||||
undo_redo->add_do_method(this, "_remove_binding", p_action, path);
|
undo_redo->add_do_method(this, "_remove_binding", action_name, path);
|
||||||
undo_redo->add_undo_method(this, "_add_binding", p_action, path);
|
undo_redo->add_undo_method(this, "_add_binding", action_name, path);
|
||||||
}
|
}
|
||||||
undo_redo->commit_action(false);
|
undo_redo->commit_action(false);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue