* Fix panel resize stuttering when tiled with browser panels (#1968) During divider drag, the portal sync system was doing O(N²) work per frame: each geometry callback synced ALL web views, and multiple callbacks fired per layout pass (setFrameSize + setFrameOrigin + layout). Two changes: 1. synchronizeWebViewForAnchor now only syncs the primary web view and defers the all-sync. Each panel fires its own geometry callback, so secondary syncs are redundant on the hot path. 2. HostContainerView.setFrameOrigin/setFrameSize use markGeometryDirtyIfNeeded which defers the callback to layout(), coalescing 2-3 notifications per frame into one. An async fallback ensures origin-only changes (without a subsequent layout) are still delivered. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix premature geometryRevision increment in markGeometryDirtyIfNeeded Address reviewer feedback (Greptile, CodeRabbit): geometryRevision and lastReportedGeometryState are now only updated when the callback actually fires, not eagerly. This prevents updateNSView from seeing a premature revision delta and triggering a redundant synchronizeForAnchor before the coalesced notification arrives. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| BrowserPanel.swift | ||
| BrowserPanelView.swift | ||
| BrowserPopupWindowController.swift | ||
| CmuxWebView.swift | ||
| MarkdownPanel.swift | ||
| MarkdownPanelView.swift | ||
| Panel.swift | ||
| PanelContentView.swift | ||
| TerminalPanel.swift | ||
| TerminalPanelView.swift | ||