Added a workaround to avoid crashes due to how TileSet editor works, fixes #23672
Also fixed a few uninitialized memory variables.
This commit is contained in:
parent
16e67388a2
commit
7f63b0e8cd
6 changed files with 10 additions and 1 deletions
|
@ -1370,6 +1370,9 @@ bool EditorNode::item_has_editor(Object *p_object) {
|
||||||
return editor_data.get_subeditors(p_object).size() > 0;
|
return editor_data.get_subeditors(p_object).size() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EditorNode::edit_item_resource(RES p_resource) {
|
||||||
|
edit_item(p_resource.ptr());
|
||||||
|
}
|
||||||
void EditorNode::edit_item(Object *p_object) {
|
void EditorNode::edit_item(Object *p_object) {
|
||||||
|
|
||||||
Vector<EditorPlugin *> sub_plugins;
|
Vector<EditorPlugin *> sub_plugins;
|
||||||
|
@ -4730,6 +4733,7 @@ void EditorNode::_bind_methods() {
|
||||||
ClassDB::bind_method("_clear_undo_history", &EditorNode::_clear_undo_history);
|
ClassDB::bind_method("_clear_undo_history", &EditorNode::_clear_undo_history);
|
||||||
ClassDB::bind_method("_dropped_files", &EditorNode::_dropped_files);
|
ClassDB::bind_method("_dropped_files", &EditorNode::_dropped_files);
|
||||||
ClassDB::bind_method("_toggle_distraction_free_mode", &EditorNode::_toggle_distraction_free_mode);
|
ClassDB::bind_method("_toggle_distraction_free_mode", &EditorNode::_toggle_distraction_free_mode);
|
||||||
|
ClassDB::bind_method("edit_item_resource", &EditorNode::edit_item_resource);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("get_gui_base"), &EditorNode::get_gui_base);
|
ClassDB::bind_method(D_METHOD("get_gui_base"), &EditorNode::get_gui_base);
|
||||||
ClassDB::bind_method(D_METHOD("_bottom_panel_switch"), &EditorNode::_bottom_panel_switch);
|
ClassDB::bind_method(D_METHOD("_bottom_panel_switch"), &EditorNode::_bottom_panel_switch);
|
||||||
|
|
|
@ -673,6 +673,7 @@ public:
|
||||||
|
|
||||||
void push_item(Object *p_object, const String &p_property = "", bool p_inspector_only = false);
|
void push_item(Object *p_object, const String &p_property = "", bool p_inspector_only = false);
|
||||||
void edit_item(Object *p_object);
|
void edit_item(Object *p_object);
|
||||||
|
void edit_item_resource(RES p_resource);
|
||||||
bool item_has_editor(Object *p_object);
|
bool item_has_editor(Object *p_object);
|
||||||
|
|
||||||
void open_request(const String &p_path);
|
void open_request(const String &p_path);
|
||||||
|
|
|
@ -2439,7 +2439,7 @@ void EditorPropertyResource::_button_input(const Ref<InputEvent> &p_event) {
|
||||||
void EditorPropertyResource::_open_editor_pressed() {
|
void EditorPropertyResource::_open_editor_pressed() {
|
||||||
RES res = get_edited_object()->get(get_edited_property());
|
RES res = get_edited_object()->get(get_edited_property());
|
||||||
if (res.is_valid()) {
|
if (res.is_valid()) {
|
||||||
EditorNode::get_singleton()->edit_item(res.ptr());
|
EditorNode::get_singleton()->call_deferred("edit_item_resource", res); //may clear the editor so do it deferred
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -353,6 +353,7 @@ void ItemListEditor::_bind_methods() {
|
||||||
ItemListEditor::ItemListEditor() {
|
ItemListEditor::ItemListEditor() {
|
||||||
|
|
||||||
selected_idx = -1;
|
selected_idx = -1;
|
||||||
|
item_list = NULL;
|
||||||
|
|
||||||
toolbar_button = memnew(ToolButton);
|
toolbar_button = memnew(ToolButton);
|
||||||
toolbar_button->set_text(TTR("Items"));
|
toolbar_button->set_text(TTR("Items"));
|
||||||
|
|
|
@ -2705,6 +2705,7 @@ void TilesetEditorContext::_bind_methods() {
|
||||||
TilesetEditorContext::TilesetEditorContext(TileSetEditor *p_tileset_editor) {
|
TilesetEditorContext::TilesetEditorContext(TileSetEditor *p_tileset_editor) {
|
||||||
|
|
||||||
tileset_editor = p_tileset_editor;
|
tileset_editor = p_tileset_editor;
|
||||||
|
snap_options_visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TileSetEditorPlugin::edit(Object *p_node) {
|
void TileSetEditorPlugin::edit(Object *p_node) {
|
||||||
|
|
|
@ -3202,6 +3202,8 @@ Viewport::Viewport() {
|
||||||
gui.drag_attempted = false;
|
gui.drag_attempted = false;
|
||||||
gui.canvas_sort_index = 0;
|
gui.canvas_sort_index = 0;
|
||||||
gui.roots_order_dirty = false;
|
gui.roots_order_dirty = false;
|
||||||
|
gui.mouse_focus = NULL;
|
||||||
|
gui.last_mouse_focus = NULL;
|
||||||
|
|
||||||
msaa = MSAA_DISABLED;
|
msaa = MSAA_DISABLED;
|
||||||
hdr = true;
|
hdr = true;
|
||||||
|
|
Loading…
Reference in a new issue