noframe: drop the drag-by-surface -- it is a finishing step, not a mode

Author's correction to the shape of yesterday's option.  The intended workflow
is: place the displays where you want them WITH their frames, quit, then edit
glass_layout.cfg to turn the frame off.  So a ,noframe window should be pinned,
not draggable -- removed the WM_NCHITTEST -> HTCAPTION handler that made the
surface a drag handle.

The arrangement being finished is the point: with no caption there is nothing
to drag it by, which is exactly what you want on a wall of monitors.  Delete
the flag to get the frame (and the dragging) back.

Unchanged and still needed: SaveLayout writes the flag back, because any later
drag of a FRAMED window rewrites the whole file and would otherwise strip it.

Re-verified live:
 - Heat MFD comes up with WS_CAPTION clear and answers WM_NCHITTEST on its
   surface with HTCLIENT (pinned) -- no window reports HTCAPTION any more.
 - Comm MFD (unflagged) keeps its caption.
 - A framed window's WM_EXITSIZEMOVE rewrote the file and BOTH ,noframe flags
   survived, with the new header explaining the arrange-first workflow.
 - surround / exploded / pod / dev boot and simulate clean.

Docs updated to describe the two-stage workflow rather than surface dragging:
the file's own header, environ.ini's BT_GLASS_LAYOUT block, context/
glass-cockpit.md and the ledger (which records the removed behaviour so the
next reader does not re-add it).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-29 11:26:11 -05:00
co-authored by Claude Opus 5
parent f5f4c6c198
commit aa788bc56d
4 changed files with 57 additions and 55 deletions
+5 -4
View File
@@ -298,11 +298,12 @@ static const char *kEnvironIniDefault =
"# The positions live in glass_layout.cfg beside this file -- delete it to go\n"
"# back to the pod ring. Windows not in the file keep their computed spot.\n"
"#\n"
"# In that file you can also append ,noframe to a window's line to strip its\n"
"# title bar and border -- handy on a multi-monitor wall where the chrome is\n"
"# just noise. A frameless window is dragged by its SURFACE instead (the\n"
"# buttons still click), and saves keep the flag:\n"
"# Once everything is where you want it, quit and append ,noframe to any line\n"
"# in that file to bring that window up with no title bar or border -- handy\n"
"# on a multi-monitor wall where the chrome is just noise:\n"
"# Heat MFD=1920,0,657,539,noframe\n"
"# Arrange FIRST: a frameless window is also pinned (no caption means nothing\n"
"# to drag it by). Delete the flag to get the frame back.\n"
"#BT_GLASS_LAYOUT=save\n"
"\n"
"# Size of the secondary displays in the cockpit surround, as a percentage of\n"