From 7e8410d1abe43466b20aec2f72e075403c948bbb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20Dj=C3=A4rv?= Date: Mon, 12 Dec 2005 09:32:59 +0000 Subject: [PATCH] * (compute_tip_xy): Calculate root_y the same way as root_x, i.e. dy is offset from top of frame instead of bottom. --- src/macfns.c | 14 ++++++++------ src/w32fns.c | 17 ++++++++--------- src/xfns.c | 17 ++++++++--------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/macfns.c b/src/macfns.c index 9d23f47b5ed..de6a055fce6 100644 --- a/src/macfns.c +++ b/src/macfns.c @@ -3840,13 +3840,15 @@ compute_tip_xy (f, parms, dx, dy, width, height, root_x, root_y) if (INTEGERP (top)) *root_y = XINT (top); - else if (*root_y + XINT (dy) - height < 0) - *root_y -= XINT (dy); - else - { - *root_y -= height; + else if (*root_y + XINT (dy) + height <= FRAME_MAC_DISPLAY_INFO (f)->height) + /* It fits below the pointer */ *root_y += XINT (dy); - } + else if (height + XINT (dy) <= *root_y) + /* It fits above the pointer. */ + *root_y -= height + XINT (dy); + else + /* Put it on the top. */ + *root_y = 0; if (INTEGERP (left)) *root_x = XINT (left); diff --git a/src/w32fns.c b/src/w32fns.c index d1e4e49bb03..647267972dc 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -7411,16 +7411,15 @@ compute_tip_xy (f, parms, dx, dy, width, height, root_x, root_y) if (INTEGERP (top)) *root_y = XINT (top); - else if (*root_y + XINT (dy) - height < 0) - *root_y -= XINT (dy); - /* If there's not enough place below the pointer, put tip above it. */ - else if (*root_y + XINT (dy) >= FRAME_W32_DISPLAY_INFO (f)->height) - *root_y -= XINT (dy); - else - { - *root_y -= height; + else if (*root_y + XINT (dy) + height <= FRAME_W32_DISPLAY_INFO (f)->height) + /* It fits below the pointer */ *root_y += XINT (dy); - } + else if (height + XINT (dy) <= *root_y) + /* It fits above the pointer. */ + *root_y -= height + XINT (dy); + else + /* Put it on the top. */ + *root_y = 0; if (INTEGERP (left)) *root_x = XINT (left); diff --git a/src/xfns.c b/src/xfns.c index ee4a7bf3b00..667b1411d1c 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -4940,16 +4940,15 @@ compute_tip_xy (f, parms, dx, dy, width, height, root_x, root_y) if (INTEGERP (top)) *root_y = XINT (top); - else if (*root_y + XINT (dy) - height < 0) - *root_y -= XINT (dy); - else if (*root_y + XINT (dy) >= FRAME_X_DISPLAY_INFO (f)->height) - /* Put tip above the pointer. */ - *root_y -= XINT (dy); - else - { - *root_y -= height; + else if (*root_y + XINT (dy) + height <= FRAME_X_DISPLAY_INFO (f)->height) + /* It fits below the pointer */ *root_y += XINT (dy); - } + else if (height + XINT (dy) <= *root_y) + /* It fits above the pointer. */ + *root_y -= height + XINT (dy); + else + /* Put it on the top. */ + *root_y = 0; if (INTEGERP (left)) *root_x = XINT (left); -- 2.39.5