PROCEDURE SplitViewer*(V: Viewer; x, y: INTEGER); VAR newV: Viewer; splitX: INTEGER; BEGIN splitX := x; IF (splitX > V.frame.X) & (splitX < V.frame.X + V.frame.W) THEN NEW(newV); newV.frame.X := splitX; newV.frame.Y := V.frame.Y; newV.frame.W := V.frame.X + V.frame.W - splitX; newV.frame.H := V.frame.H; V.frame.W := splitX - V.frame.X; newV.obj := V.obj; (* same object, different view *) InsertViewer(V, newV); Restore(V); Restore(newV) END END SplitViewer;
The Object Tiler serves as a layout engine that arranges "gadgets" (Oberon's version of UI components or widgets) into tiled structures. Unlike traditional window managers that rely on overlapping windows, the Object Tiler emphasizes a tiled strategy Automatic Resizing Oberon Object Tiler
A real-time visual overlay that shows how many instances of an object will fit within a specific target area or page before you commit the command. PROCEDURE SplitViewer*(V: Viewer; x, y: INTEGER); VAR newV:
MIT — free for personal, educational, and commercial use. PROCEDURE SplitViewer*(V: Viewer