[Lazarus] Decision required WRT dragging
DrDiettrich1 at aol.com
Thu Mar 29 14:30:02 CEST 2012
Paul Ishenin schrieb:
> 29.03.2012 14:52, Hans-Peter Diettrich wrote:
>> The current situation, and your arguments, read to the user like:
>> "We know that there exist bugs, and we know how to eliminate fatal
>> consequences, but we prefer to leave our code in unusable state."
> This is how you see it. Read it so:
> "We know that there exists bugs in the code outside LCL. We prefere the
> bugs fixed in that code instead of adapting LCL for the bad written code".
Some "bugs" cannot be fixed in code. E.g. when a form or control is
docked in code, what should happen to its DragKind? When the DragManager
requires a properly initialized DragKind, in order to start the proper
operation, should the property of the control be changed, or should we
introduce distinct calls that would allow to dock non-dockable controls
programmatically? The patch here checks for an already set HostDockSite,
which definitely indicates that the control *is* already docked, and
adjusts the DragKind accordingly.
For the second problem, the illegal change of the mouse capture, what
should we consider as the reason for such bugs, and how to cure it? This
can be solved in two ways:
1) The DragManager ignores such changes.
2) The "dragging" state is checked in the control, before an attempt is
made to change the capture.
Obviously  is the simpler and more robust solution, because the
DragManager is always involved. Moving the "dragging" check somewhere
else, e.g. into the CaptureControl procedure, may result in more
trouble, and has to be checked for every single control.
More information about the Lazarus