comctl32: Position the tooltip window correctly on multi-monitor setups.

This commit is contained in:
Alexandre Julliard 2006-10-23 14:05:34 +02:00
parent 280defcfcf
commit 9d6d54f5e6
1 changed files with 14 additions and 7 deletions

View File

@ -496,7 +496,9 @@ static void
TOOLTIPS_Show (HWND hwnd, TOOLTIPS_INFO *infoPtr)
{
TTTOOL_INFO *toolPtr;
RECT rect, wndrect;
HMONITOR monitor;
MONITORINFO mon_info;
RECT rect;
SIZE size;
NMHDR hdr;
int ptfx = 0;
@ -593,13 +595,18 @@ TOOLTIPS_Show (HWND hwnd, TOOLTIPS_INFO *infoPtr)
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;
monitor = MonitorFromRect( &rect, MONITOR_DEFAULTTOPRIMARY );
mon_info.cbSize = sizeof(mon_info);
GetMonitorInfoW( monitor, &mon_info );
if( rect.right > mon_info.rcWork.right ) {
rect.left -= rect.right - mon_info.rcWork.right + 2;
rect.right = mon_info.rcWork.right - 2;
}
wndrect.bottom = GetSystemMetrics( SM_CYSCREEN );
if( rect.bottom > wndrect.bottom ) {
if (rect.left < mon_info.rcWork.left) rect.left = mon_info.rcWork.left;
if( rect.bottom > mon_info.rcWork.bottom ) {
RECT rc;
if (toolPtr->uFlags & TTF_IDISHWND)