[PATCH resend] comctl32: When adding a scrollbar to a listview, update the other one.

Alex Henrie alexhenrie24 at gmail.com
Wed May 3 00:34:15 CDT 2017


2017-05-02 23:10 GMT-06:00 Alistair Leslie-Hughes <leslie_alistair at hotmail.com>:
> Hi Alex,
>
> On 03/05/17 14:53, Alex Henrie wrote:
>> Cc: Nikolay Sivov <nsivov at codeweavers.com>
>
>> +static void LISTVIEW_UpdateScroll(LISTVIEW_INFO *infoPtr)
>> +{
>> +    INT dx, dy;
>> +
>> +    if ((infoPtr->dwStyle & LVS_NOSCROLL) || !is_redrawing(infoPtr)) return;
>> +
>> +    /* Setting the horizontal scroll can change the listview size
>> +     * (and potentially everything else) so we need to recompute
>> +     * everything again for the vertical scroll and vice-versa
>> +     */
>> +
>> +    dx = LISTVIEW_UpdateHScroll(infoPtr);
>> +    dy = LISTVIEW_UpdateVScroll(infoPtr);
>> +    dx += LISTVIEW_UpdateHScroll(infoPtr);
>> +    dy += LISTVIEW_UpdateVScroll(infoPtr);
>> +
> Is there any reason your calling update twice for each control?

For example:

1. Because of new content, a horizontal scrollbar is added, taking up
some of the vertical space (dx = LISTVIEW_UpdateHScroll(infoPtr))
2. Because there is not enough vertical space now, a vertical
scrollbar is added, taking up some of the horizontal space (dy =
LISTVIEW_UpdateVScroll(infoPtr))
3. The horizontal scrollbar thumb's position is updated to reflect
that there is less horizontal space now (dx +=
LISTVIEW_UpdateHScroll(infoPtr))

Or:

1. Because of new content, a vertical scrollbar is added, taking up
some of the horizontal space (dy = LISTVIEW_UpdateVScroll(infoPtr))
2. Because there is not enough horizontal space now, a horizontal
scrollbar is added, taking up some of the vertical space (dx +=
LISTVIEW_UpdateHScroll(infoPtr))
3. The vertical scrollbar thumb's position is updated to reflect that
there is less vertical space now (dy +=
LISTVIEW_UpdateVScroll(infoPtr))

-Alex



More information about the wine-devel mailing list