The existing code structure of the PanelManager is lacking a clear vision with respect to the overall structure of the application windows.
It seems like the ability to have several top-level windows was added later, without re-thinking the relationships, which creates several inner contradictions.
We need a definite and unambiguous structure here. Since Lumiera is supposed to be used in a setup with several displays, or a desktop with several workspaces, it is a crucial concern to handle several top-level windows properly. Which means, we do not want just a pile of uncorrelated windows. Rather, all windows shall be part of a single, coordinated layout, where each window is arranged in accordance to a specific perspective. Moreover, there shall be one single, overarching UI topology -- which allows to navigate to each part, even if this incurres switching to another desktop (not sure how to achive that right now, but it nontheless remains our goal).
As a consequence of these design decisions, we need to rearrange our existing code and functionality
- a new entity, termed
DockArea will take on most of the code/functionality of the existing PanelManager
- each top-level
WorkspaceWindow holds a dock, but docks must be created such as to attach to the first, the master dock
- the latter creates the ability to drag panels accross distinct top-level windows. Behinde the scenes, this corresponds to a GDL dock master entity.
- there is one single, central
PanelLocator, which keeps track of all DockAreas, and thus allows to address and place panels in a targetted way.
- we stick to the notion of specifically typed panels; and for the time being, this selection of panel types is hard wired.
- of course, we offer the ability to arrange the layout within those limits -- and such a layout arrangement shall be stored persistently.
Indeed relevant and a potential point of concern...