mirror of
https://github.com/emilk/egui.git
synced 2026-08-29 12:50:04 -04:00
## Related * Fixes a regression from #8152 * Part of #2921 Reported symptom: you can widen the Widget Gallery window, but it won't shrink again. I'm not sure this fix is the best one, but it does work. # Claude says ## Cause A `Grid` gives its **last** column all the available width, so a width-filling widget in it (`Separator`, `TextEdit`, `ProgressBar`, …) makes the `Grid` remember a `col_width` that is really just "however wide we happened to be". At the start of a resize drag, `Resize` runs a one-frame sizing pass (#8152) to measure the minimum content width and clamps the drag against it. But `GridLayout::next_cell` inflated every cell to `prev_state.col_width`, so the `Grid` reported its previous width as its minimum — even though it was only offered `min_size.x`. The clamp is a lower bound, so widening kept working while shrinking was blocked at the widened width. ## Fix During an enclosing sizing pass, don't inflate the stretchy last column to its remembered width, and don't store the measured (narrow) widths. Minimal repro (fails before, passes after — added as a regression test): ```rust Window::new("x").default_width(280.0).show(ctx, |ui| { egui::Grid::new("grid").num_columns(2).show(ui, |ui| { ui.label("Separator"); ui.separator(); // fills the last column ui.end_row(); }); }); ``` `Panel` is unaffected — it clamps only against the user's `min_size`, with no content-min sizing pass. * [x] I have followed the instructions in the PR template 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Lucas Meurer <hi@lucasmerlin.me>