Skip to content

Commit 51b845e

Browse files
committed
fix tests for hints and links
Closes #1188 Closes #815 Closes #453
1 parent fe30b5b commit 51b845e

File tree

1 file changed

+27
-10
lines changed

1 file changed

+27
-10
lines changed

frontends/rioterm/src/context/renderable.rs

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -108,39 +108,50 @@ impl PendingUpdate {
108108

109109
let mut terminal = terminal.lock();
110110

111-
// Get the terminal's current damage and merge with incoming damage
111+
// Get the terminal's current damage
112112
let terminal_damage = terminal.peek_damage_event();
113-
let merged_damage = match (terminal_damage, &damage) {
114-
(None, damage) => damage.clone(),
115-
(Some(term_damage), damage) => Self::merge_damages(&term_damage, damage),
116-
};
117113

118114
// Create or update the snapshot
119115
match &mut self.snapshot {
120116
None => {
121-
// Create new snapshot
117+
// Create new snapshot with merged terminal and incoming damage
118+
let initial_damage = match (terminal_damage, &damage) {
119+
(None, damage) => damage.clone(),
120+
(Some(term_damage), damage) => {
121+
Self::merge_damages(&term_damage, damage)
122+
}
123+
};
124+
122125
self.snapshot = Some(TerminalSnapshot {
123126
colors: terminal.colors,
124127
display_offset: terminal.display_offset(),
125128
blinking_cursor: terminal.blinking_cursor,
126129
visible_rows: terminal.visible_rows(),
127130
cursor: terminal.cursor(),
128-
damage: merged_damage,
131+
damage: initial_damage,
129132
columns: terminal.columns(),
130133
screen_lines: terminal.screen_lines(),
131134
});
132135
}
133136
Some(existing_snapshot) => {
134-
// Update existing snapshot with fresh terminal state but merge damage
137+
// Update existing snapshot with fresh terminal state
135138
existing_snapshot.colors = terminal.colors;
136139
existing_snapshot.display_offset = terminal.display_offset();
137140
existing_snapshot.blinking_cursor = terminal.blinking_cursor;
138141
existing_snapshot.visible_rows = terminal.visible_rows();
139142
existing_snapshot.cursor = terminal.cursor();
140-
existing_snapshot.damage =
141-
Self::merge_damages(&existing_snapshot.damage, &merged_damage);
142143
existing_snapshot.columns = terminal.columns();
143144
existing_snapshot.screen_lines = terminal.screen_lines();
145+
146+
// Merge existing snapshot damage with incoming damage
147+
existing_snapshot.damage =
148+
Self::merge_damages(&existing_snapshot.damage, &damage);
149+
150+
// Also merge with terminal damage if present
151+
if let Some(term_damage) = terminal_damage {
152+
existing_snapshot.damage =
153+
Self::merge_damages(&existing_snapshot.damage, &term_damage);
154+
}
144155
}
145156
}
146157

@@ -242,6 +253,9 @@ mod tests {
242253
let mut content = RenderableContent::from_cursor_config(&CursorConfig::default());
243254
let terminal = create_test_terminal();
244255

256+
// Reset terminal damage to start fresh
257+
terminal.lock().reset_damage();
258+
245259
// Add hint labels
246260
content.hint_labels.push(HintLabel {
247261
position: Pos::new(Line(5), Column(10)),
@@ -313,6 +327,9 @@ mod tests {
313327
let mut content = RenderableContent::from_cursor_config(&CursorConfig::default());
314328
let terminal = create_test_terminal();
315329

330+
// Reset terminal damage to start fresh
331+
terminal.lock().reset_damage();
332+
316333
// First invalidation with partial damage
317334
let mut damaged_lines1 = BTreeSet::new();
318335
damaged_lines1.insert(LineDamage::new(5, true));

0 commit comments

Comments
 (0)