@@ -4655,26 +4655,28 @@ void EditorHelpBitTooltip::popup_under_cursor() {
46554655 vr = window->get_usable_parent_rect ();
46564656 }
46574657
4658- if (r.size .x + r.position .x > vr.size .x + vr.position .x ) {
4659- // Place it in the opposite direction. If it fails, just hug the border.
4660- r.position .x = mouse_pos.x - r.size .x - tooltip_offset.x ;
4658+ if (!DisplayServer::get_singleton ()->has_feature (DisplayServer::FEATURE_SELF_FITTING_WINDOWS) || is_embedded ()) {
4659+ if (r.size .x + r.position .x > vr.size .x + vr.position .x ) {
4660+ // Place it in the opposite direction. If it fails, just hug the border.
4661+ r.position .x = mouse_pos.x - r.size .x - tooltip_offset.x ;
46614662
4662- if (r.position .x < vr.position .x ) {
4663- r.position .x = vr.position .x + vr.size .x - r.size .x ;
4663+ if (r.position .x < vr.position .x ) {
4664+ r.position .x = vr.position .x + vr.size .x - r.size .x ;
4665+ }
4666+ } else if (r.position .x < vr.position .x ) {
4667+ r.position .x = vr.position .x ;
46644668 }
4665- } else if (r.position .x < vr.position .x ) {
4666- r.position .x = vr.position .x ;
4667- }
46684669
4669- if (r.size .y + r.position .y > vr.size .y + vr.position .y ) {
4670- // Same as above.
4671- r.position .y = mouse_pos.y - r.size .y - tooltip_offset.y ;
4670+ if (r.size .y + r.position .y > vr.size .y + vr.position .y ) {
4671+ // Same as above.
4672+ r.position .y = mouse_pos.y - r.size .y - tooltip_offset.y ;
46724673
4673- if (r.position .y < vr.position .y ) {
4674- r.position .y = vr.position .y + vr.size .y - r.size .y ;
4674+ if (r.position .y < vr.position .y ) {
4675+ r.position .y = vr.position .y + vr.size .y - r.size .y ;
4676+ }
4677+ } else if (r.position .y < vr.position .y ) {
4678+ r.position .y = vr.position .y ;
46754679 }
4676- } else if (r.position .y < vr.position .y ) {
4677- r.position .y = vr.position .y ;
46784680 }
46794681
46804682 // When `FLAG_POPUP` is false, it prevents the editor from losing focus when displaying the tooltip.
0 commit comments