Module: wine Branch: master Commit: b4b99697f99cebec0f92042075d62f27b235d35c URL: http://source.winehq.org/git/wine.git/?a=commit;h=b4b99697f99cebec0f92042075...
Author: Huw Davies huw@codeweavers.com Date: Thu Mar 28 16:03:30 2013 +0000
user32: Keep the combo listbox within the monitor's work area.
---
dlls/user32/combo.c | 18 ++++++++++++------ 1 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/dlls/user32/combo.c b/dlls/user32/combo.c index 346b346..2aa4424 100644 --- a/dlls/user32/combo.c +++ b/dlls/user32/combo.c @@ -1043,18 +1043,24 @@ static void CBDropDown( LPHEADCOMBO lphc ) } }
+ r.left = rect.left; + r.top = rect.bottom; + r.right = r.left + lphc->droppedRect.right - lphc->droppedRect.left; + r.bottom = r.top + nDroppedHeight; + /*If height of dropped rectangle gets beyond a screen size it should go up, otherwise down.*/ 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; + if (r.bottom > mon_info.rcWork.bottom) + { + r.top = max( rect.top - nDroppedHeight, mon_info.rcWork.top ); + r.bottom = min( r.top + nDroppedHeight, mon_info.rcWork.bottom ); + }
- SetWindowPos( lphc->hWndLBox, HWND_TOP, rect.left, rect.bottom, - lphc->droppedRect.right - lphc->droppedRect.left, - nDroppedHeight, - SWP_NOACTIVATE | SWP_SHOWWINDOW); + SetWindowPos( lphc->hWndLBox, HWND_TOP, r.left, r.top, r.right - r.left, r.bottom - r.top, + SWP_NOACTIVATE | SWP_SHOWWINDOW );
if( !(lphc->wState & CBF_NOREDRAW) )