diff options
author | Michael Alexsander <michaelalexsander@protonmail.com> | 2022-07-23 14:51:06 -0300 |
---|---|---|
committer | Michael Alexsander <michaelalexsander@protonmail.com> | 2022-07-23 14:51:06 -0300 |
commit | 46346cfaa59cf604d45684d097ee5b5f3af98903 (patch) | |
tree | d2b65a4b6d89c787749156662e9a229f61706344 /scene/main | |
parent | 667cef39b4e9f98ed545d95de442319c447f2164 (diff) |
Make tooltips be shown at different directions if there's not enough space
Diffstat (limited to 'scene/main')
-rw-r--r-- | scene/main/viewport.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index c2fa1ace8d..7876b00202 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -1234,13 +1234,23 @@ void Viewport::_gui_show_tooltip() { Rect2i vr = window->get_usable_parent_rect(); if (r.size.x + r.position.x > vr.size.x + vr.position.x) { - r.position.x = vr.position.x + vr.size.x - r.size.x; + // Place it in the opposite direction. If it fails, just hug the border. + r.position.x = gui.tooltip_pos.x - r.size.x - tooltip_offset.x; + + if (r.position.x < vr.position.x) { + r.position.x = vr.position.x + vr.size.x - r.size.x; + } } else if (r.position.x < vr.position.x) { r.position.x = vr.position.x; } if (r.size.y + r.position.y > vr.size.y + vr.position.y) { - r.position.y = vr.position.y + vr.size.y - r.size.y; + // Same as above. + r.position.y = gui.tooltip_pos.y - r.size.y - tooltip_offset.y; + + if (r.position.y < vr.position.y) { + r.position.y = vr.position.y + vr.size.y - r.size.y; + } } else if (r.position.y < vr.position.y) { r.position.y = vr.position.y; } |