From 0c1dea0841d1cfa855c1899ba182eee4c00eee13 Mon Sep 17 00:00:00 2001 From: Joshua Thielen Date: Sat, 23 Oct 1999 19:59:55 +0000 Subject: [PATCH] Fixed tooltips positioning. --- dlls/comctl32/tooltips.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/dlls/comctl32/tooltips.c b/dlls/comctl32/tooltips.c index 4dc862db04c..c9e7518b280 100644 --- a/dlls/comctl32/tooltips.c +++ b/dlls/comctl32/tooltips.c @@ -189,7 +189,7 @@ static VOID TOOLTIPS_Show (HWND hwnd, TOOLTIPS_INFO *infoPtr) { TTTOOL_INFO *toolPtr; - RECT rect; + RECT rect, wndrect; SIZE size; HDC hdc; NMHDR hdr; @@ -241,13 +241,31 @@ TOOLTIPS_Show (HWND hwnd, TOOLTIPS_INFO *infoPtr) rect.top += 20; } - /* FIXME: check position */ - TRACE("pos %d - %d\n", rect.left, rect.top); rect.right = rect.left + size.cx; rect.bottom = rect.top + size.cy; + /* check position */ + wndrect.right = GetSystemMetrics( SM_CXSCREEN ); + if( rect.right > wndrect.right ) { + rect.left -= rect.right - wndrect.right + 2; + rect.right = wndrect.right - 2; + } + wndrect.bottom = GetSystemMetrics( SM_CYSCREEN ); + if( rect.bottom > wndrect.bottom ) { + RECT rc; + + if (toolPtr->uFlags & TTF_IDISHWND) + GetWindowRect ((HWND)toolPtr->uId, &rc); + else { + rc = toolPtr->rect; + MapWindowPoints (toolPtr->hwnd, (HWND)0, (LPPOINT)&rc, 2); + } + rect.bottom = rc.top - 2; + rect.top = rect.bottom - size.cy; + } + AdjustWindowRectEx (&rect, GetWindowLongA (hwnd, GWL_STYLE), FALSE, GetWindowLongA (hwnd, GWL_EXSTYLE)); -- 2.11.4.GIT