Merge pull request #70117 from rsjtdrjgfuzkfg/openxr-action-map-crashfix
OpenXR: fix action map editor crash on save / reset
This commit is contained in:
commit
ccbefa1f43
|
@ -57,7 +57,7 @@ void OpenXRActionMapEditor::_notification(int p_what) {
|
||||||
case NOTIFICATION_ENTER_TREE:
|
case NOTIFICATION_ENTER_TREE:
|
||||||
case NOTIFICATION_THEME_CHANGED: {
|
case NOTIFICATION_THEME_CHANGED: {
|
||||||
for (int i = 0; i < tabs->get_child_count(); i++) {
|
for (int i = 0; i < tabs->get_child_count(); i++) {
|
||||||
Control *tab = static_cast<Control *>(tabs->get_child(i));
|
Control *tab = Object::cast_to<Control>(tabs->get_child(i));
|
||||||
if (tab) {
|
if (tab) {
|
||||||
tab->add_theme_style_override("panel", get_theme_stylebox(SNAME("panel"), SNAME("Tree")));
|
tab->add_theme_style_override("panel", get_theme_stylebox(SNAME("panel"), SNAME("Tree")));
|
||||||
}
|
}
|
||||||
|
@ -208,7 +208,7 @@ void OpenXRActionMapEditor::_on_remove_action_set(Object *p_action_set_editor) {
|
||||||
void OpenXRActionMapEditor::_on_action_removed() {
|
void OpenXRActionMapEditor::_on_action_removed() {
|
||||||
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 = static_cast<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) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -309,7 +309,7 @@ void OpenXRActionMapEditor::_on_tabs_tab_changed(int p_tab) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenXRActionMapEditor::_on_tab_button_pressed(int p_tab) {
|
void OpenXRActionMapEditor::_on_tab_button_pressed(int p_tab) {
|
||||||
OpenXRInteractionProfileEditorBase *interaction_profile_editor = static_cast<OpenXRInteractionProfileEditorBase *>(tabs->get_tab_control(p_tab));
|
OpenXRInteractionProfileEditorBase *interaction_profile_editor = Object::cast_to<OpenXRInteractionProfileEditorBase>(tabs->get_tab_control(p_tab));
|
||||||
ERR_FAIL_NULL(interaction_profile_editor);
|
ERR_FAIL_NULL(interaction_profile_editor);
|
||||||
|
|
||||||
undo_redo->create_action(TTR("Remove interaction profile"));
|
undo_redo->create_action(TTR("Remove interaction profile"));
|
||||||
|
@ -375,9 +375,9 @@ void OpenXRActionMapEditor::_clear_action_map() {
|
||||||
child->queue_free();
|
child->queue_free();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < tabs->get_tab_count(); i++) {
|
for (int i = tabs->get_tab_count() - 1; i >= 0; --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 = static_cast<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) {
|
||||||
tabs->remove_child(interaction_profile_editor);
|
tabs->remove_child(interaction_profile_editor);
|
||||||
interaction_profile_editor->queue_free();
|
interaction_profile_editor->queue_free();
|
||||||
|
|
|
@ -308,7 +308,7 @@ void OpenXRInteractionProfileEditor::_update_interaction_profile() {
|
||||||
|
|
||||||
void OpenXRInteractionProfileEditor::_theme_changed() {
|
void OpenXRInteractionProfileEditor::_theme_changed() {
|
||||||
for (int i = 0; i < main_hb->get_child_count(); i++) {
|
for (int i = 0; i < main_hb->get_child_count(); i++) {
|
||||||
Control *panel = static_cast<Control *>(main_hb->get_child(i));
|
Control *panel = Object::cast_to<Control>(main_hb->get_child(i));
|
||||||
if (panel) {
|
if (panel) {
|
||||||
panel->add_theme_style_override("panel", get_theme_stylebox(SNAME("panel"), SNAME("TabContainer")));
|
panel->add_theme_style_override("panel", get_theme_stylebox(SNAME("panel"), SNAME("TabContainer")));
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ void OpenXRSelectActionDialog::_notification(int p_what) {
|
||||||
void OpenXRSelectActionDialog::_on_select_action(const String p_action) {
|
void OpenXRSelectActionDialog::_on_select_action(const String p_action) {
|
||||||
if (selected_action != "") {
|
if (selected_action != "") {
|
||||||
NodePath button_path = action_buttons[selected_action];
|
NodePath button_path = action_buttons[selected_action];
|
||||||
Button *button = static_cast<Button *>(get_node(button_path));
|
Button *button = Object::cast_to<Button>(get_node(button_path));
|
||||||
if (button != nullptr) {
|
if (button != nullptr) {
|
||||||
button->set_flat(true);
|
button->set_flat(true);
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ void OpenXRSelectActionDialog::_on_select_action(const String p_action) {
|
||||||
|
|
||||||
if (selected_action != "") {
|
if (selected_action != "") {
|
||||||
NodePath button_path = action_buttons[selected_action];
|
NodePath button_path = action_buttons[selected_action];
|
||||||
Button *button = static_cast<Button *>(get_node(button_path));
|
Button *button = Object::cast_to<Button>(get_node(button_path));
|
||||||
if (button != nullptr) {
|
if (button != nullptr) {
|
||||||
button->set_flat(false);
|
button->set_flat(false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ void OpenXRSelectInteractionProfileDialog::_notification(int p_what) {
|
||||||
void OpenXRSelectInteractionProfileDialog::_on_select_interaction_profile(const String p_interaction_profile) {
|
void OpenXRSelectInteractionProfileDialog::_on_select_interaction_profile(const String p_interaction_profile) {
|
||||||
if (selected_interaction_profile != "") {
|
if (selected_interaction_profile != "") {
|
||||||
NodePath button_path = ip_buttons[selected_interaction_profile];
|
NodePath button_path = ip_buttons[selected_interaction_profile];
|
||||||
Button *button = static_cast<Button *>(get_node(button_path));
|
Button *button = Object::cast_to<Button>(get_node(button_path));
|
||||||
if (button != nullptr) {
|
if (button != nullptr) {
|
||||||
button->set_flat(true);
|
button->set_flat(true);
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ void OpenXRSelectInteractionProfileDialog::_on_select_interaction_profile(const
|
||||||
|
|
||||||
if (selected_interaction_profile != "") {
|
if (selected_interaction_profile != "") {
|
||||||
NodePath button_path = ip_buttons[selected_interaction_profile];
|
NodePath button_path = ip_buttons[selected_interaction_profile];
|
||||||
Button *button = static_cast<Button *>(get_node(button_path));
|
Button *button = Object::cast_to<Button>(get_node(button_path));
|
||||||
if (button != nullptr) {
|
if (button != nullptr) {
|
||||||
button->set_flat(false);
|
button->set_flat(false);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue