diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 564cdf11928..c9f356b82c1 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -5901,6 +5901,10 @@ void EditorNode::_add_dropped_files_recursive(const Vector &p_files, Str } void EditorNode::_file_access_close_error_notify(const String &p_str) { + callable_mp_static(&EditorNode::_file_access_close_error_notify_impl).bind(p_str).call_deferred(); +} + +void EditorNode::_file_access_close_error_notify_impl(const String &p_str) { add_io_error(vformat(TTR("Unable to write to file '%s', file in use, locked or lacking permissions."), p_str)); } @@ -6502,13 +6506,16 @@ static Node *_resource_get_edited_scene() { } void EditorNode::_print_handler(void *p_this, const String &p_string, bool p_error, bool p_rich) { - EditorNode *en = static_cast(p_this); + callable_mp_static(&EditorNode::_print_handler_impl).bind(p_string, p_error, p_rich).call_deferred(); +} + +void EditorNode::_print_handler_impl(const String &p_string, bool p_error, bool p_rich) { if (p_error) { - en->log->add_message(p_string, EditorLog::MSG_TYPE_ERROR); + singleton->log->add_message(p_string, EditorLog::MSG_TYPE_ERROR); } else if (p_rich) { - en->log->add_message(p_string, EditorLog::MSG_TYPE_STD_RICH); + singleton->log->add_message(p_string, EditorLog::MSG_TYPE_STD_RICH); } else { - en->log->add_message(p_string, EditorLog::MSG_TYPE_STD); + singleton->log->add_message(p_string, EditorLog::MSG_TYPE_STD); } } diff --git a/editor/editor_node.h b/editor/editor_node.h index b5f84a32049..814899e169c 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -518,8 +518,10 @@ private: static void _editor_file_dialog_unregister(EditorFileDialog *p_dialog); static void _file_access_close_error_notify(const String &p_str); + static void _file_access_close_error_notify_impl(const String &p_str); static void _print_handler(void *p_this, const String &p_string, bool p_error, bool p_rich); + static void _print_handler_impl(const String &p_string, bool p_error, bool p_rich); static void _resource_saved(Ref p_resource, const String &p_path); static void _resource_loaded(Ref p_resource, const String &p_path);