class BBS::Window

A Window is a top-level Container with its own border, title, and focus manager. The Application stacks windows; the top window is the active one and receives input first. Windows that are not modal can be switched, Turbo Vision style: a click on one brings it to the front, F6 and Shift-F6 cycle them, Alt-1 … Alt-9 picks one by the number on its frame. The active window has a double frame, the others a single one. A modal window (the Dialogs) keeps the front until it closes.

A maximizable window that can lay itself out at any size (resizable?: MasterDetail, Stream, Form, a scrolling Info) gets a zoom gadget in its top right corner, Turbo Vision style: [↑] fills the desktop between the menubar and the statusbar, [↕] puts it back. F5, Alt-Enter and a double click on the title bar do the same.

A window that is not maximized can be moved and, when resizable?, resized (movable: false turns it off): drag the title bar to move it, the bottom right corner to size it. From the keyboard Ctrl-F5 (or F6) starts it (F6 only while it is the only window), Turbo Vision style: the arrows move the window, Shift and the arrows size it (Tab switches the arrows between moving and sizing), and Enter or Esc ends it. A window moved or sized keeps its place when the terminal is resized, pulled back onto the screen if needed.