Fix crash when tooltip_request_func object is freed

This commit is contained in:
Haoyu Qiu 2021-10-06 14:32:21 +08:00
parent a7ba227631
commit 45e943f4fe
2 changed files with 4 additions and 2 deletions

View File

@ -2399,6 +2399,7 @@ Control::CursorShape TextEdit::get_cursor_shape(const Point2 &p_pos) const {
} }
String TextEdit::get_tooltip(const Point2 &p_pos) const { String TextEdit::get_tooltip(const Point2 &p_pos) const {
Object *tooltip_obj = ObjectDB::get_instance(tooltip_obj_id);
if (!tooltip_obj) { if (!tooltip_obj) {
return Control::get_tooltip(p_pos); return Control::get_tooltip(p_pos);
} }
@ -2421,7 +2422,8 @@ String TextEdit::get_tooltip(const Point2 &p_pos) const {
} }
void TextEdit::set_tooltip_request_func(Object *p_obj, const StringName &p_function, const Variant &p_udata) { void TextEdit::set_tooltip_request_func(Object *p_obj, const StringName &p_function, const Variant &p_udata) {
tooltip_obj = p_obj; ERR_FAIL_NULL(p_obj);
tooltip_obj_id = p_obj->get_instance_id();
tooltip_func = p_function; tooltip_func = p_function;
tooltip_ud = p_udata; tooltip_ud = p_udata;
} }

View File

@ -330,7 +330,7 @@ private:
int _get_column_pos_of_word(const String &p_key, const String &p_search, uint32_t p_search_flags, int p_from_column) const; int _get_column_pos_of_word(const String &p_key, const String &p_search, uint32_t p_search_flags, int p_from_column) const;
/* Tooltip. */ /* Tooltip. */
Object *tooltip_obj = nullptr; ObjectID tooltip_obj_id;
StringName tooltip_func; StringName tooltip_func;
Variant tooltip_ud; Variant tooltip_ud;