Today I could find another workaround for the last severe bug in the dockable IDE. Now it's possible at least to drag and dock the IDE windows with the mouse :-)

How to proceed?


Some of the problems:

My work is based on Graeme's Git repository, so that it's not easy to supply SVN patches.

My patches are workarounds for several problems, in detail with TControl, TWinControl and the DragManager. More analysis is required, in order to find out the real reasons of the misbehaviour[1].

Many bugs only manifest in the IDE, not in ordinary applications or the DragManager examples, what makes it even harder to find the appropriate cure, that does not break other application or component code[2]. Many patches have to be applied before it's even possible to start debugging the IDE. Afterwards every fix may result in different remaining problems, possibly not covered by the remaining workarounds.

Last not least I'm still offline, and cannot report the many observed bugs one by one. I only can try to write down the observed misbehaviour during my recent work, and let somebody else care for the rest.


[1] One of my experiments resulted in a refactored (stripped down) DragManager, with the Performers removed and their code moved into the DragObject classes. An according patch can be applied easily, because it essentially exchanges the dragmanager.inc by a very new version, and extends dragobject.inc. OTOH it has to be applied as a whole, impossible to break it down into smaller steps.

[2] Since many bugs can be observed only in the IDE, they also should be fixed in the IDE code. This is not so easy, due to the many methods and event handlers that may be involved. Many bugs definitely originate in the TControl and TWinControl implementation, where I suspect workarounds for other components (IDE, csCaptureMouse, anchor docking...). Removal of these workarounds may cause malfunction of the affected components, perhaps only in specific widgetsets. Nonetheless I'd suggest to trim that code, to achive the Delphi compatible behaviour again, and then think about a separate or combined implementation of platform-independent (Lazarus specific) dragging.

DoDi


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to