[lazarus] TWinControl.GetClientOrigin

Micha Nelissen M.Nelissen at student.tue.nl
Tue Sep 30 07:32:55 EDT 2003



> TWinControl.GetClientOrigin is used by TControl.ScreenToClient which is 
> used by FindDragTarget. FindDragTarget retrieves the mouse position and 
> subtracts the client origin from it to find client position. Therefore 
> it needs current on-screen position of control, not the LCL position. 
> The LCL position is different when the LCL wants something to be in a 
> different place but it can't be, for example a TCustomGroupBox page 
> always has an offset of (0,22) or so in win32.
> 
> The result of this bug is that FindDragTarget does not work properly and 
> so controls get MOUSELEAVE,MOUSEENTER incorrectly which is very 
> confusing. IMHO this should be a high priority bug, albeit a complex one.
> 
> Furtermore, notice that this only happens when a control is resized, 
> initially it does work properly. So it could be a problem in the win32 
> interface too, not handling resize correctly (still) or so.

Okay after some more debugging I notice that the first time the Left,Top 
of the groupbox page is (4,22), so there is no difference between 
BoundsRealized and (Left,Top), both (4,22). But when the form is 
resized, the LCL wants to set left,top to (0,0) and then trouble begins. 
So we have to determine: where is the bug? Should be (0,0) immediately 
or should the resize leave it at (4,22)?

Regards,

Micha.







More information about the Lazarus mailing list