Skip to content

The Dialog Refactoring #28

@sppmacd

Description

@sppmacd

This mainly adds WindowRoot class, that represents widget hierarchy + window attributes in a single object. This is mainly to support loading dialogs from EML (see e.g FileExplorer) while allowing them to be any kind of window (HostWindow, MDI::Window). Also, in future I want to make some "tiling window manager" (e.g for EssaDB to support resizable splitters, docking etc).

  • Port everything to WindowRoot ("Screen") API:
    • FilePrompt
    • MessageBox
    • Prompt
    • ColorPickerDialog
  • Don't use legacy MDI hack in examples and remove it
  • Port special windows to native (Host) windows:
    • ContextMenuOverlay (uses widgets, so should be easy) turned out to be not so easy because of totally wrong event logic in modal loop
    • TooltipOverlay (maybe just a label)
    • NotificationWindow (??? doesn't realliy fit anywhere, maybe just should use BasicLayout & proper z-index support)
  • Merge MDI::Overlay+MDI::Window and make it final
  • Rename WidgetTreeRoot -> something ?? (AbstractWindow)
  • Remove MDI::Window indirection in MDI::Host
  • Add and use async Dialog class (required for full Emscripten support)
  • Don't support modal MDI windows (this doesn't make sense for random MDI widget to block the entire program ??)
  • ...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions