http://bugs.winehq.org/show_bug.cgi?id=9450
Summary: Wrong rebar height calculation for hidden bands Product: Wine Version: 0.9.42. Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: Wine-Rebar AssignedTo: wine-bugs@winehq.org ReportedBy: alex@thehandofagony.com
Created an attachment (id=7780) --> (http://bugs.winehq.org/attachment.cgi?id=7780) Proposed patch
Currently our builtin rebar code does not calculate 0 as the height of the control if no bands are visible, while native does. Tracing through our rebar code I found this suspicious code:
for (i = iBeginBand; i < iEndBand; i = next_band(infoPtr, i)) { lpBand = &infoPtr->bands[i]; yMaxHeight = max(yMaxHeight, lpBand->lcy); }
while further down the height of the control is returned as return yPos + yMaxHeight;
It does not make sense to include the hight of a hidden band, and my fix
for (i = iBeginBand; i < iEndBand; i = next_band(infoPtr, i)) { lpBand = &infoPtr->bands[i]; if(!HIDDENBAND(lpBand)) yMaxHeight = max(yMaxHeight, lpBand->lcy); }
corrects the problem.
But this will need a test case, right?