[PATCH 1/4] shell32/autocomplete: Implement the listbox scrollbar manually

Gabriel Ivăncescu gabrielopcode at gmail.com
Fri Apr 12 06:45:19 CDT 2019


On 4/12/19 2:33 PM, Huw Davies wrote:
> On Fri, Apr 12, 2019 at 02:16:10PM +0300, Gabriel Ivăncescu wrote:
>> On 4/12/19 12:33 PM, Huw Davies wrote:
>>> You should be able to use a SBS_SIZEBOX scrollbar for this, rather
>>> than re-invent the wheel.
>>
>> You mean for the grip?
> 
> Yes, sorry I meant to reply to [2/4].
> 
> Huw.
> 

Ok, that makes more sense, but IMO it's not any better. Most of the code 
will have to remain or be moved around.

The only difference I can see is in WM_NCCALCSIZE, which would have to 
be "moved" to update_listbox_size, so it's not really a gain (if I use 
SBS_SIZEBOX) since the flipping logic would need to be moved there.

WM_NCHITTEST will have to remain for two reasons: when it's flipped up, 
the arrows and behavior needs to change. Also, when the grip is a 
triangle (scrollbar is not visible), on Windows moving the mouse to the 
*square* of the grip enables it just like if it were a square. If I rely 
on SBS_SIZEBOX's native functionality it wouldn't work like on Windows. 
Bottom line is, I'd still have to add a WM_NCHITTEST manually, so it's 
not really a gain here, either.

The painting of the grip will still have to be done due to the flipping 
(I don't think drawing the scrollbar with a DefWindowProc is a problem).

And if I use a SBS_SIZEBOX it means it will have to be another window, 
separate from the scrollbar, which I think will complicate the code more.

Looking at the patch, I can't really identify other areas where it would 
result in less code. Do you have something specific in mind?

I realize the patch, by itself, seems slightly redundant for now, but 
it's needed for the last patch which flips it up. :-)  (I *did* try with 
separate windows initially and gave up on it due to this)



More information about the wine-devel mailing list