diff options
author | Juan Linietsky <reduzio@gmail.com> | 2018-09-06 20:38:16 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2018-09-06 20:38:16 -0300 |
commit | 74359a1d1e288a156d89e052d6b4ae6e8c187c6b (patch) | |
tree | 595419274d3a4040e60b4fba62a70c0afc2a7cb8 /scene/2d/canvas_item.cpp | |
parent | 072bf41c037ef4c7aab23f1afa769c65c9dfdf73 (diff) | |
download | redot-engine-74359a1d1e288a156d89e052d6b4ae6e8c187c6b.tar.gz |
Add a function to force transform update, fixes #17628
Diffstat (limited to 'scene/2d/canvas_item.cpp')
-rw-r--r-- | scene/2d/canvas_item.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/scene/2d/canvas_item.cpp b/scene/2d/canvas_item.cpp index 7f7e3542ed..3914c75ca8 100644 --- a/scene/2d/canvas_item.cpp +++ b/scene/2d/canvas_item.cpp @@ -967,6 +967,17 @@ Vector2 CanvasItem::get_local_mouse_position() const { return get_global_transform().affine_inverse().xform(get_global_mouse_position()); } +void CanvasItem::force_update_transform() { + ERR_FAIL_COND(!is_inside_tree()); + if (!xform_change.in_list()) { + return; + } + + get_tree()->xform_change_list.remove(&xform_change); + + notification(NOTIFICATION_TRANSFORM_CHANGED); +} + void CanvasItem::_bind_methods() { ClassDB::bind_method(D_METHOD("_toplevel_raise_self"), &CanvasItem::_toplevel_raise_self); @@ -1061,6 +1072,8 @@ void CanvasItem::_bind_methods() { ClassDB::bind_method(D_METHOD("set_notify_transform", "enable"), &CanvasItem::set_notify_transform); ClassDB::bind_method(D_METHOD("is_transform_notification_enabled"), &CanvasItem::is_transform_notification_enabled); + ClassDB::bind_method(D_METHOD("force_update_transform"), &CanvasItem::force_update_transform); + ClassDB::bind_method(D_METHOD("make_canvas_position_local", "screen_point"), &CanvasItem::make_canvas_position_local); ClassDB::bind_method(D_METHOD("make_input_local", "event"), &CanvasItem::make_input_local); |