• Artur Grunau's avatar
    MdiDockableWindow: new MDI helper class · 6d4262de
    Artur Grunau authored
    MdiDockableWindow has been extracted from MdiDockArea to simplify and
    better structure our MDI implementation. The new class takes care of
    creating all necessary representations (docked and floating window) of
    widgets added to MdiDockArea and seamlessly switching between them in
    response to the user's actions (window dragging, key presses, etc).
    MdiDockableWindow improves our MDI implementation in two ways:
    - MdiFloatingWindow and MdiDockedWindow instances shouldn't be
      interacted with directly; they're created and disposed of as needed,
      and therefore can't be used as a handle to access and modify an MDI
      window's state; MdiDockableWindow, in contrast, fits this role
      perfectly; it manages both representations of an MDI window, and as
      a result stays around as long as at least one of them is needed
    - managing state transitions of many sub-windows directly in MdiDockArea
      was becoming clumsy as signal mapping and dynamic properties were
      required; having a separate widget that only has to control the state
      of one sub-window makes the code related to state transitions much