From 30a25defb3ec288f7e635ce3580e61629e145992 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 23 Oct 2006 14:04:42 +0200 Subject: [PATCH] user: Fixed combo box drop position on multi-monitor setups. --- dlls/user/combo.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dlls/user/combo.c b/dlls/user/combo.c index a82cd5fd647..c2c49bb1f97 100644 --- a/dlls/user/combo.c +++ b/dlls/user/combo.c @@ -1052,6 +1052,8 @@ static void CBUpdateEdit( LPHEADCOMBO lphc , INT index ) */ static void CBDropDown( LPHEADCOMBO lphc ) { + HMONITOR monitor; + MONITORINFO mon_info; RECT rect,r; int nItems = 0; int nDroppedHeight; @@ -1123,7 +1125,11 @@ static void CBDropDown( LPHEADCOMBO lphc ) } /*If height of dropped rectangle gets beyond a screen size it should go up, otherwise down.*/ - if( (rect.bottom + nDroppedHeight) >= GetSystemMetrics( SM_CYSCREEN ) ) + monitor = MonitorFromRect( &rect, MONITOR_DEFAULTTOPRIMARY ); + mon_info.cbSize = sizeof(mon_info); + GetMonitorInfoW( monitor, &mon_info ); + + if( (rect.bottom + nDroppedHeight) >= mon_info.rcWork.bottom ) rect.bottom = rect.top - nDroppedHeight; SetWindowPos( lphc->hWndLBox, HWND_TOP, rect.left, rect.bottom,