# Tagbottom against the one pane kind whose renderPane RETURNS EARLY. An image # draws no body rows and no tagline of its own — the tag comes from the outer # loop and so does the transient message row — so it is exactly the pane where # "the tag moved" and "the message row moved with it" can come apart. Nothing # in tagbottom.snap touches one. ppmdiag pic.ppm start 31 150 -n 1 wait 8000 Newcol Joincol stable 700 20000 # open it the way images.snap does: type the name into the shell pane's own # text and right-click it. The narrow-window image splits below that shell. press left 5 9 release left 5 9 stable 400 5000 key i text pic.ppm key esc settle 100 press right 6 9 release right 6 9 wait 10000 img stable 700 20000 snap img-top # SPC t b: the tag leaves grid row 6 for row 30 and the glyph art slides up into the # row it left. The style capture is the half a text grid cannot see — the # tagline's chrome colours have to travel with it, and a tag row drawn in the # palette of the cell art under it would read as part of the picture. key space t b stable 700 15000 snap img-bottom snapstyle img-bottom # `/` on an image pane. There is no text to search, and that is the point: the # prompt is drawn by the message-row pass, which runs OUTSIDE renderPane # precisely so an early-returning pane still gets one. With Tagbottom it lands # on the last row of the art (grid 29), just above the tagline on grid 30 — # over the picture, never over the tag it was cut from. key / send ZZ stable 600 8000 stable 400 5000 snap search-prompt key esc settle 100 stable 400 5000 # ...and EXECUTE `Del` on that bottom tagline, which is the assertion the # pixels cannot make: the middle click has to map grid row 30 to the image pane's # TAG row rather than to a body row it has no body for. The image pane goes # away entirely and the shell takes the whole window back. # `@Del` locates the command text without depending on the image's metadata. press middle @Del 31 release middle @Del 31 stable 700 15000 snap del-image