From 209725defbfde9d8de7b739af5b950c9255fde12 Mon Sep 17 00:00:00 2001 From: Selva Nair Date: Sat, 16 Nov 2024 19:13:42 -0500 Subject: [PATCH] Position tooltip below the taskbar when it is at the top of the screen Fixes github issue #710 Signed-off-by: Selva Nair --- tray.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tray.c b/tray.c index f2acc98b0..c474e7927 100644 --- a/tray.c +++ b/tray.c @@ -374,6 +374,8 @@ PositionTrayToolTip(LONG x, LONG y) { RECT r; LONG cxmax = GetSystemMetrics(SM_CXSCREEN); + LONG cymax = GetSystemMetrics(SM_CYSCREEN); + APPBARDATA abd = {.cbSize = sizeof(APPBARDATA) }; GetWindowRect(traytip, &r); LONG w = r.right - r.left; LONG h = r.bottom - r.top; @@ -383,6 +385,14 @@ PositionTrayToolTip(LONG x, LONG y) */ r.left = (x < w/2) ? 0 : ((x + w/2 < cxmax) ? x - w/2 : cxmax - w); r.top = (y > h + 10) ? y - (h + 10) : y + 10; + + /* If taskbar is at top, move the top of the window to the bottom of the taskbar */ + if (SHAppBarMessage(ABM_GETTASKBARPOS, &abd) + && (abd.rc.bottom < cymax/2)) + { + r.top = abd.rc.bottom; + } + SendMessageW(traytip, TTM_TRACKPOSITION, 0, MAKELONG(r.left, r.top)); SetWindowPos(traytip, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); }