`Area::new` now takes an `Id` by argument (#4115)
This makes it more explicit that you are responsible for assigning a globally unique `Id`.
This commit is contained in:
parent
86d7f296ae
commit
e29022efc4
|
|
@ -52,7 +52,7 @@ impl State {
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
/// # egui::__run_test_ctx(|ctx| {
|
/// # egui::__run_test_ctx(|ctx| {
|
||||||
/// egui::Area::new("my_area")
|
/// egui::Area::new(egui::Id::new("my_area"))
|
||||||
/// .fixed_pos(egui::pos2(32.0, 32.0))
|
/// .fixed_pos(egui::pos2(32.0, 32.0))
|
||||||
/// .show(ctx, |ui| {
|
/// .show(ctx, |ui| {
|
||||||
/// ui.label("Floating text!");
|
/// ui.label("Floating text!");
|
||||||
|
|
@ -79,9 +79,10 @@ pub struct Area {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Area {
|
impl Area {
|
||||||
pub fn new(id: impl Into<Id>) -> Self {
|
/// The `id` must be globally unique.
|
||||||
|
pub fn new(id: Id) -> Self {
|
||||||
Self {
|
Self {
|
||||||
id: id.into(),
|
id,
|
||||||
movable: true,
|
movable: true,
|
||||||
interactable: true,
|
interactable: true,
|
||||||
constrain: false,
|
constrain: false,
|
||||||
|
|
@ -96,6 +97,9 @@ impl Area {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Let's you change the `id` that you assigned in [`Self::new`].
|
||||||
|
///
|
||||||
|
/// The `id` must be globally unique.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn id(mut self, id: Id) -> Self {
|
pub fn id(mut self, id: Id) -> Self {
|
||||||
self.id = id;
|
self.id = id;
|
||||||
|
|
|
||||||
|
|
@ -69,30 +69,25 @@ impl super::View for PanZoom {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (id, pos, callback) in [
|
for (i, (pos, callback)) in [
|
||||||
(
|
(
|
||||||
"a",
|
|
||||||
egui::Pos2::new(0.0, 0.0),
|
egui::Pos2::new(0.0, 0.0),
|
||||||
Box::new(|ui: &mut egui::Ui, _: &mut Self| ui.button("top left!"))
|
Box::new(|ui: &mut egui::Ui, _: &mut Self| ui.button("top left!"))
|
||||||
as Box<dyn Fn(&mut egui::Ui, &mut Self) -> egui::Response>,
|
as Box<dyn Fn(&mut egui::Ui, &mut Self) -> egui::Response>,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"b",
|
|
||||||
egui::Pos2::new(0.0, 120.0),
|
egui::Pos2::new(0.0, 120.0),
|
||||||
Box::new(|ui: &mut egui::Ui, _| ui.button("bottom left?")),
|
Box::new(|ui: &mut egui::Ui, _| ui.button("bottom left?")),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"c",
|
|
||||||
egui::Pos2::new(120.0, 120.0),
|
egui::Pos2::new(120.0, 120.0),
|
||||||
Box::new(|ui: &mut egui::Ui, _| ui.button("right bottom :D")),
|
Box::new(|ui: &mut egui::Ui, _| ui.button("right bottom :D")),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"d",
|
|
||||||
egui::Pos2::new(120.0, 0.0),
|
egui::Pos2::new(120.0, 0.0),
|
||||||
Box::new(|ui: &mut egui::Ui, _| ui.button("right top ):")),
|
Box::new(|ui: &mut egui::Ui, _| ui.button("right top ):")),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"e",
|
|
||||||
egui::Pos2::new(60.0, 60.0),
|
egui::Pos2::new(60.0, 60.0),
|
||||||
Box::new(|ui, state| {
|
Box::new(|ui, state| {
|
||||||
use egui::epaint::*;
|
use egui::epaint::*;
|
||||||
|
|
@ -110,8 +105,11 @@ impl super::View for PanZoom {
|
||||||
ui.add(egui::Slider::new(&mut state.drag_value, 0.0..=100.0).text("My value"))
|
ui.add(egui::Slider::new(&mut state.drag_value, 0.0..=100.0).text("My value"))
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
] {
|
]
|
||||||
let id = egui::Area::new(id)
|
.into_iter()
|
||||||
|
.enumerate()
|
||||||
|
{
|
||||||
|
let id = egui::Area::new(id.with(("subarea", i)))
|
||||||
.default_pos(pos)
|
.default_pos(pos)
|
||||||
// Need to cover up the pan_zoom demo window,
|
// Need to cover up the pan_zoom demo window,
|
||||||
// but may also cover over other windows.
|
// but may also cover over other windows.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue