Hide window-link graphs in split view; fix left-edge drag-out dead zone - #354
Merged
epeicher merged 1 commit intoJul 15, 2026
Conversation
Windows snapped into split view (snapped-left / snapped-right) now send the same not-drawable signal as minimized ones, so link renderers skip their ties; they still count as obstacles. The render host also refreshes frames on SNAP_ZONE_COMMITTED / SNAP_SPLIT_FILLED, whose geometry lands after the drag session ends. commitUnstate now clamps the un-state re-anchor to the desktop's lower bound so the drag offset matches the written geometry. A snapped-left window whose saved floating width exceeded the half-screen re-anchored at a negative left, and the move-loop clamp pinned it at x=0 until the cursor traveled the whole overshoot. Fixes DESKMOD-24.
epeicher
deleted the
deskmod-24-hide-graphs-in-split-view-and-allow-dragging-from-the-left
branch
July 15, 2026 08:39
epeicher
added a commit
that referenced
this pull request
Jul 15, 2026
Overview lays windows out as scaled CSS-transform thumbnails, but the link frame geometry reads offset* metrics, which transforms don't touch — so the ties kept pointing at the pre-overview window positions. Hide the link layers for the mode's whole lifetime: fade out on OVERVIEW_ENTERING alongside the thumbnail animation, fade back in on OVERVIEW_EXITED once the windows have settled home. Follow-up to #354.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #337.
CleanShot.2026-07-14.at.18.33.17.mp4
What it does
Two fixes for window links (#337) interacting with split view:
snapped-left/snapped-right) no longer draw relation ties. The ties come back the moment a window is dragged back out to floating.Rationale
Graphs. With two related windows tiled side-by-side, a spline's natural anchors sit on the split seam — which the partner window covers. The occlusion-aware anchoring then fell back to the only visible border stretch, the screen edge, and drew an artifact spline from the edge of the desktop across the snapped window's content. A half-screen tile has no free border to anchor on: any tie either crosses the partner or re-anchors on the screen edge — noise, not information.
Drag.
commitUnstatere-anchors an un-snapping window under the cursor atcursorX - savedWidth × grabRatio. For a snapped-left window whose saved floating width exceeds the half-screen (the default 1200 px window vs a ~770 px half), that anchor is negative. The drag offsets derived from the unclamped value, but the move loop clampsx ≥ 0— so the window stayed pinned at the left edge (sliding only vertically) until the cursor traveled the entire overshoot, ~200 px+. Snapped-right windows never produce a negative anchor, which is why only the left side felt broken.Implementation
src/window-links/render-host.ts: newdrawableRectOf()— snapped windows contributenullrects to edges and group members, the same not-drawable signal minimized windows already send (renderers skipnull-endpoint edges per the existing contract). They stay inobstacles: a half-screen tile still occludes other windows' borders. The frame pipeline also subscribes toSNAP_ZONE_COMMITTED/SNAP_SPLIT_FILLED— snap geometry lands after the drag session ends, so without them the last drag frame went stale.src/window/pointer.ts:commitUnstateclamps the re-anchorleft/toptoEDGE_MARGIN, the same lower bound the move loop enforces, so the drag offset matches the geometry actually written and the window tracks the cursor 1:1 immediately.src/window-links/types.ts,docs/javascript-reference.md,docs/examples/window-links.md): thenull-rect semantics now list split view alongside minimized / other-desktop.Testing instructions
Both new regression tests fail on trunk and pass here.
Manual (wp-env, two related windows — e.g. a post editor and one of its comments):