OK, I managed to fix the problem by doing this:
Index: dlls/comctl32/rebar.c =================================================================== RCS file: /home/wine/wine/dlls/comctl32/rebar.c,v retrieving revision 1.83 diff -u -r1.83 rebar.c --- dlls/comctl32/rebar.c 9 Feb 2004 22:07:43 -0000 1.83 +++ dlls/comctl32/rebar.c 21 Feb 2004 07:03:15 -0000 @@ -1497,10 +1497,7 @@
/* separator from previous band */ cxsep = (cntonrow == 0) ? 0 : SEP_WIDTH; - - /* Header: includes gripper, text, image */ - cx = lpBand->cxHeader; - if (lpBand->fStyle & RBBS_FIXEDSIZE) cx = lpBand->lcx; + cx = lpBand->lcx;
if (infoPtr->dwStyle & CCS_VERT) dobreak = (y + cx + cxsep > adjcy);
However, I'm not sure I understand the original code (i.e. initial cx in REBAR_Layout = header only for the !RBBS_FIXED_SIZE case), and hence don't know whether this will break something else. Can anyone comment?
Matt
On Sat, Feb 21, 2004 at 11:40:00AM +1100, Matt Chapman wrote:
Hi,
I'm having some rebar issues with a particular application (Canon File Viewer Utility).
The rebar is meant to look something like:
|0--------------- |1------|2---| |3------|4------|5------|6------ | (and there are some extra hidden bands)
Instead in wine the result is:
|0--------------- ||| |3------ ||||
with the remaining bands having 0-size child windows (and there's important functionality in those bands). The minimum sizes provided by the application seem to be right. The application then requests maximisation of 0,3,4,5,6 in that order, which isn't implemented in WINE so that should not do anything, but I'd still expect the minimum sizes to be honoured.
The output of wine --debugmsg +rebar is at:
http://www.cse.unsw.edu.au/~matthewc/rebar.gz (62K)
I'm currently trying to understand the source, but if anyone is familiar with the rebar and has any suggestions that would be much appreciated.
Thanks, Matt