[Lazarus] Anchor-Docking Bugs

Martin lazarus at mfriebe.de
Wed Jun 23 16:33:46 CEST 2010


On 23/06/2010 15:28, Mattias Gaertner wrote:
> On Wed, 23 Jun 2010 11:06:46 +0200
> Hans-Peter Diettrich<DrDiettrich1 at aol.com>  wrote:
>
>    
>> Martin schrieb:
>>
>>      
>>>>> 1. Just Click, without moving your mouse, on a Docking-Header, after
>>>>> that the Desktop gets a 3px height and full length - big Rect (hard to
>>>>> explain :( ) which is also shown if you want to dock a form to a
>>>>> docking-side
>>>>>
>>>>>            
>>>> Are you sure you use the anchordocking manager and not the easydockmgr?
>>>> The anchordocking has by default a drag threshold of 4 pixel. A simple
>>>> click on the header does not start the docking.
>>>>
>>>>          
>>> I can reproduce this here, with the anchor dock package. (didn't count
>>> the pixels, 3 or 4....)
>>>
>>> Just a click, it happens on mouse up.
>>>        
>> IMO this misbehaviour results from the inappropriate setting of
>> DragImmediate=True, inherited from Delphi.
>>      
> Why does that only happen on windows?
>    

It because of:

In  lcl\include\dragmanager.inc  TDockPerformer

1) On mouse down, it executes DragStart =>  but at this time does*not*  yet
draw the rectangle
2) On mouse up it executes DragStop, and it does call  "ADockObjectCopy.HideDockImage;"
And that draws the rectangle, or rather some of it, at the top of the
screen.

3) ADockObjectCopy.HideDockImage; calls
   WidgetSet.DrawDefaultDockImage(EraseDockRect, DockRect, disHide);

and on windows disHide probaply doesn't do much =>  th pattern is always drawn with invert. But since there is no old pattern to delete, it actually paints a new one.


Other widgetsets may have better handling of disHide

Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20100623/d1a90cae/attachment-0004.html>


More information about the Lazarus mailing list