Hi,
not much of a complete answer. (I am on the run, and I havn't got full
background anyway)
But it' something to do with Mousecaptur (afaik).
And yes they differ somehow: http://bugs.freepascal.org/view.php?id=13878
Hans-Peter Diettrich wrote:
Now that I've improved the handling of splitters in a dock site, I
again came across some weird behaviour of the LCL, depending on the
widgetset :-(
To reproduce:
1. Run examples/dockmanager/easytree/easydocking.
2. Dock one or more controls into the dock site.
3. Press (and hold) the left mouse button over the dockzone header of
a docked control.
4. Move the mouse around.
Now you'll find the control (associated with the header) being dragged
with the gtk2 widgetset, but with the win32 widgetset nothing will
happen at all, and the whole application becomes unresponsive :-(
Can somebody explain what will happen when the mouse is pressed over
one control (or menu entry), and is released over a different control?
On the LButtonDown message the csLButtonDown flag is set in the
control's ControlState, but how is this flag cleared later? It
possibly will never be cleared, when the BeginDrag method of a
*different* control is invoked?
IMO the Delphi control model is flawed, when every control remembers
the mouse button states itself. IMO the position of a button-down and
the affected control should be stored in a unique place, e.g. in the
TMouse object. Then TMouse can handle all mouse moves and button
events, and will notify the controls only of definite events, like
Clicks. Then also the (immediate or delayed) begin of a dragging
operation can be determined and handled properly in the Mouse object.
The same for a mouse capture: it should be handled in one place (again
in the Mouse object), so that no control will ever have to handle
captured events itself, when instead the events have to be handled by
the capturing control, or by the DragManager.
Or did I miss something?
Of course it won't be a good idea to introduce such big changes into
the pending release, but IMO the following version should have a less
complicated, more stable, and less widgetset-dependent handling of
mouse events.
DoDi
--
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus