Mattias Gaertner schrieb:

In the most useful model every control would have its own (configurable) layout manager, selectable from an (extensible) number of predefined layouts. In fact the DockManager already *is* such an *installable* layout manager...

A TDockmanager is somewhat more.

Not really. Every container can act as a DockSite, this is not a privilege or special feature of an DockManager. All methods involved in the *act* of docking can reside in the TDragDockObjects, as implemented in Delphi, instead of the currently used DragPerformers. Also the distinction between Controls[] and DockClients[] is nonsense, because only one of these collections can contain elements, at the same time (both properties could be rebased onto the same field).

But I think a TLCLLayoutManager could be done similar to this. Maybe
TDockManager should be made a descendant of a TLCLLayoutManager.

Right. I already tried such an approach, and failed due to the existing dependencies between a general layout manager and the already introduced AnchorSides, ChildSizing etc. fields - these and all related methods should be moved into specialized layout managers.

A control only needs a reference to its layout manager, and eventually another (untyped) reference to layout data, created and used exclusively by that layout manager. Such a design would e.g. allow to transform the currently distributed AnchorSides into kind of that tree, that currently has to be built from scratch, whenever a site with (such) anchors is updated (during autosizing...).

DoDi


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

Reply via email to