Skip to content

feat: docking #83

Closed
Closed

Description

@octalide

What

Dear ImGui style docking: windows dock into a dock space, split it, stack as tabs, and float out again, with the layout owned by the context and persisted.

Needs #82 (windows and layer bands), #99 (drag and drop carries the dragged window), #105 (tab bars for tab stacks) and #95 (the dock tree lives in and persists through the state store). Holding a modifier reads the held modifiers from #96.

Acceptance

  • A dock space fills a rect (the whole surface or a region) and holds a tree of splits and tab stacks
  • Dragging a window's title shows drop targets (center for tabs, four edges for splits, outer edges for the whole space), with a preview of the result
  • Splitters between docked nodes resize them, with min sizes respected
  • Tab stacks reorder by drag, close, and undock by dragging a tab out
  • A dock layout can be built in code (a default layout) and saved and restored with the window state
  • Docked windows keep their own scroll and state, and a docked window's content code is identical to a floating one's
  • The existing begin_dock side panel becomes a dock node, so apps with a single side panel stay a one-call setup
  • Holding a modifier while dragging suppresses docking

Activity

  1. added
    minorBackwards-compatible new feature or capability
    featureNew capability or feature addition
    on Oct 1, 2026
  2. added 3 commits that reference this issue on Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew capability or feature additionminorBackwards-compatible new feature or capability

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions