mirror of
https://github.com/emilk/egui.git
synced 2026-09-01 06:10:06 -04:00
Add indeterminate state to checkbox (#3605)
<!-- Please read the "Making a PR" section of [`CONTRIBUTING.md`](https://github.com/emilk/egui/blob/master/CONTRIBUTING.md) before opening a Pull Request! * Keep your PR:s small and focused. * If applicable, add a screenshot or gif. * If it is a non-trivial addition, consider adding a demo for it to `egui_demo_lib`, or a new example. * Do NOT open PR:s from your `master` branch, as that makes it hard for maintainers to add commits to your PR. * Remember to run `cargo fmt` and `cargo cranky`. * Open the PR as a draft until you have self-reviewed it and run `./scripts/check.sh`. * When you have addressed a PR comment, mark it as resolved. Please be patient! I will review your PR, but my time is limited! -->
This commit is contained in:
@@ -15,6 +15,7 @@ pub struct MiscDemoWindow {
|
||||
|
||||
dummy_bool: bool,
|
||||
dummy_usize: usize,
|
||||
checklist: [bool; 3],
|
||||
}
|
||||
|
||||
impl Default for MiscDemoWindow {
|
||||
@@ -30,6 +31,7 @@ impl Default for MiscDemoWindow {
|
||||
|
||||
dummy_bool: false,
|
||||
dummy_usize: 0,
|
||||
checklist: std::array::from_fn(|i| i == 0),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -107,6 +109,24 @@ impl View for MiscDemoWindow {
|
||||
}
|
||||
});
|
||||
ui.radio_value(&mut self.dummy_usize, 64, "radio_value");
|
||||
ui.label("Checkboxes can be in an indeterminate state:");
|
||||
let mut all_checked = self.checklist.iter().all(|item| *item);
|
||||
let any_checked = self.checklist.iter().any(|item| *item);
|
||||
let indeterminate = any_checked && !all_checked;
|
||||
if ui
|
||||
.add(
|
||||
Checkbox::new(&mut all_checked, "Check/uncheck all")
|
||||
.indeterminate(indeterminate),
|
||||
)
|
||||
.changed()
|
||||
{
|
||||
self.checklist
|
||||
.iter_mut()
|
||||
.for_each(|checked| *checked = all_checked);
|
||||
}
|
||||
for (i, checked) in self.checklist.iter_mut().enumerate() {
|
||||
ui.checkbox(checked, format!("Item {}", i + 1));
|
||||
}
|
||||
});
|
||||
|
||||
ui.collapsing("Columns", |ui| {
|
||||
|
||||
Reference in New Issue
Block a user