#609: #595 Stage 2c — render_content: window/group dividers, tab-drag overlay, tab-hover tooltip - #629
Merged
JDonaghy merged 2 commits intoAug 6, 2026
Conversation
…verlay, tab-hover tooltip (Stage 2c) Ports the three raw-Buffer/Frame writes #601 explicitly scoped out of TuiShellApp::render_content: - Window/editor-group divider lines: render_separators (within-group :split/:vsplit) and a new group_divider_cells/render_group_dividers (between editor groups, split.dividers) now paint through Backend::draw_status_bar via a 1-cell "solid StatusBar segment" trick -- the same one AppShell::render's own generic divider uses, confirming no new quadraui primitive is needed. The #481 phantom- divider-beside-scrollbar guard, previously a frame.buffer_mut() read-back, is now a pure data computation over RenderedWindow geometry shared by draw_frame and render_content alike. - Tab-drag ghost overlay (render_tab_drag_overlay): dropped its Frame parameter; the ghost label now paints via the same draw_status_bar trick. Reads TuiShellApp's tui_drag_source/tui_drag_cursor/ tui_tab_drop_zone, which #602 already wires handle_mouse_event to populate. - Tab-hover tooltip (render_tab_hover_tooltip): sources from the plain engine.tab_hover_tooltip field, same trick. render_all_windows now always paints separators regardless of the frame: Option parameter, since the underlying paint no longer needs a raw Buffer. Adds driver_with_shell coverage for all three (group divider is the issue's required headless case; tab-drag ghost and tab-hover tooltip are bonus coverage since both turned out to be reachable without a real PTY/raw-mode sequence). Updates shell_app.rs's module doc to mark #609 closed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… window height
- group_divider_cells's left_has_scrollbar check now excludes the
neighbor window's per-window status-line row, matching
window_overflows_vertically's own text_rows accounting. Previously
it spanned the window's full rect height, so an overflowing left
window with a status line wrongly looked scrollbar-covered on its
status-line row too, leaving a 1-row gap in the group divider right
at the neighbor's status bar. Added a direct unit test
(group_divider_cells_covers_neighbor_status_line_row) that
regresses this exact scenario.
- Hoisted the repeated backend.set_theme(...) call out of
render_separators's and render_group_dividers's per-cell divider
loops (draw_rule_cell_themed/draw_rule_row_themed) instead of
rebuilding the ~50-field quadraui::Theme on every divider cell via
draw_rule_row/draw_rule_cell.
- Documented why every divider/rule/ghost/tooltip draw shares the
literal WidgetId::new("tui:rule") — currently inert, but a landmine
for a future maintainer wiring hover/press state through this helper.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.
Closes #609
Automated PR opened by coordinator for review of issue #609.