refactor(ui): ensure layout is rebuilt and use Rc for drill state
Update UI components and effects to ensure layout is rebuilt when necessary. - Rebuild layout in `EnterEditAtCursor` effect - Use `Rc` for sharing records in `StartDrill` effect - Improve formatting in `SetDrillPendingEdit` effect - Update test case in `App` to use multi-line method calls Co-Authored-By: fiddlerwoaroof/git-smart-commit (unsloth/gemma-4-26B-A4B-it-GGUF:UD-Q5_K_XL)
This commit is contained in:
@ -506,7 +506,10 @@ mod tests {
|
|||||||
let mut app = two_col_model();
|
let mut app = two_col_model();
|
||||||
// Total rows: A, B, C + R0..R9 = 13 rows. Last row = 12.
|
// Total rows: A, B, C + R0..R9 = 13 rows. Last row = 12.
|
||||||
for i in 0..10 {
|
for i in 0..10 {
|
||||||
app.model.category_mut("Row").unwrap().add_item(&format!("R{i}"));
|
app.model
|
||||||
|
.category_mut("Row")
|
||||||
|
.unwrap()
|
||||||
|
.add_item(&format!("R{i}"));
|
||||||
}
|
}
|
||||||
app.term_height = 13; // ~5 visible rows
|
app.term_height = 13; // ~5 visible rows
|
||||||
app.model.active_view_mut().selected = (0, 0);
|
app.model.active_view_mut().selected = (0, 0);
|
||||||
|
|||||||
@ -96,7 +96,11 @@ impl Effect for RemoveFormula {
|
|||||||
pub struct EnterEditAtCursor;
|
pub struct EnterEditAtCursor;
|
||||||
impl Effect for EnterEditAtCursor {
|
impl Effect for EnterEditAtCursor {
|
||||||
fn apply(&self, app: &mut App) {
|
fn apply(&self, app: &mut App) {
|
||||||
let ctx = app.cmd_context(crossterm::event::KeyCode::Null, crossterm::event::KeyModifiers::NONE);
|
app.rebuild_layout();
|
||||||
|
let ctx = app.cmd_context(
|
||||||
|
crossterm::event::KeyCode::Null,
|
||||||
|
crossterm::event::KeyModifiers::NONE,
|
||||||
|
);
|
||||||
let value = ctx.display_value.clone();
|
let value = ctx.display_value.clone();
|
||||||
drop(ctx);
|
drop(ctx);
|
||||||
app.buffers.insert("edit".to_string(), value);
|
app.buffers.insert("edit".to_string(), value);
|
||||||
@ -472,9 +476,10 @@ pub struct SetDrillPendingEdit {
|
|||||||
impl Effect for SetDrillPendingEdit {
|
impl Effect for SetDrillPendingEdit {
|
||||||
fn apply(&self, app: &mut App) {
|
fn apply(&self, app: &mut App) {
|
||||||
if let Some(drill) = &mut app.drill_state {
|
if let Some(drill) = &mut app.drill_state {
|
||||||
drill
|
drill.pending_edits.insert(
|
||||||
.pending_edits
|
(self.record_idx, self.col_name.clone()),
|
||||||
.insert((self.record_idx, self.col_name.clone()), self.new_value.clone());
|
self.new_value.clone(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user