[Lazarus] Made dockable IDE work :-)
Hans-Peter Diettrich
DrDiettrich1 at aol.com
Wed Dec 22 14:48:48 CET 2010
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
More information about the Lazarus
mailing list