Skip to content

Commit f7ac814

Browse files
authored
refactor: Extract shared layout computation from painter (#1021)
* refactor: extract layout to shared function * refactor: consolidate right prompt fields into RightPromptBounds Replace the redundant `right_prompt_rendered` bool and three separate Option fields with a single `Option<RightPromptBounds>` struct in both PromptLayout and RenderSnapshot, ensuring the fields are always set or unset together. Add unit tests for compute_layout.
1 parent 9955d10 commit f7ac814

File tree

2 files changed

+313
-203
lines changed

2 files changed

+313
-203
lines changed

src/engine.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1951,12 +1951,14 @@ impl Reedline {
19511951
)?;
19521952

19531953
if self.mouse_click_mode.is_enabled() {
1954-
let buffer = self.editor.get_buffer();
1955-
let (raw_before, raw_after) = buffer.split_at(cursor_position_in_buffer);
1956-
self.last_render_snapshot = Some(
1957-
self.painter
1958-
.render_snapshot(&lines, menu, raw_before, raw_after),
1959-
);
1954+
if let Some(layout) = &self.painter.last_layout {
1955+
let buffer = self.editor.get_buffer();
1956+
let (raw_before, raw_after) = buffer.split_at(cursor_position_in_buffer);
1957+
self.last_render_snapshot = Some(
1958+
self.painter
1959+
.render_snapshot(&lines, menu, raw_before, raw_after, layout),
1960+
);
1961+
}
19601962
} else {
19611963
self.last_render_snapshot = None;
19621964
}
@@ -2120,10 +2122,7 @@ mod tests {
21202122
menu_start_row: None,
21212123
large_buffer_extra_rows_after_prompt: None,
21222124
large_buffer_offset: None,
2123-
right_prompt_rendered: false,
2124-
right_prompt_row: None,
2125-
right_prompt_start_col: None,
2126-
right_prompt_end_col: None,
2125+
right_prompt: None,
21272126
});
21282127

21292128
let result = reedline.handle_event(

0 commit comments

Comments
 (0)