|
@@ -4655,26 +4655,28 @@ void EditorHelpBitTooltip::popup_under_cursor() {
|
|
|
vr = window->get_usable_parent_rect();
|
|
|
}
|
|
|
|
|
|
- if (r.size.x + r.position.x > vr.size.x + vr.position.x) {
|
|
|
- // Place it in the opposite direction. If it fails, just hug the border.
|
|
|
- r.position.x = mouse_pos.x - r.size.x - tooltip_offset.x;
|
|
|
+ if (!DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_SELF_FITTING_WINDOWS) || is_embedded()) {
|
|
|
+ if (r.size.x + r.position.x > vr.size.x + vr.position.x) {
|
|
|
+ // Place it in the opposite direction. If it fails, just hug the border.
|
|
|
+ r.position.x = mouse_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;
|
|
|
+ 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;
|
|
|
}
|
|
|
- } 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) {
|
|
|
- // Same as above.
|
|
|
- r.position.y = mouse_pos.y - r.size.y - tooltip_offset.y;
|
|
|
+ if (r.size.y + r.position.y > vr.size.y + vr.position.y) {
|
|
|
+ // Same as above.
|
|
|
+ r.position.y = mouse_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;
|
|
|
+ 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;
|
|
|
}
|
|
|
- } else if (r.position.y < vr.position.y) {
|
|
|
- r.position.y = vr.position.y;
|
|
|
}
|
|
|
|
|
|
// When `FLAG_POPUP` is false, it prevents the editor from losing focus when displaying the tooltip.
|