Deprecate `Ui::allocate_new_ui` in favor of `Ui::scope_builder` (#5764)

They had the same signature and slightly different implementations, now
it's streamlined
This commit is contained in:
lucasmerlin 2025-03-05 12:08:43 +01:00 committed by GitHub
parent 1dea8fac9b
commit 962c7c7516
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 14 additions and 28 deletions

View File

@ -776,7 +776,7 @@ impl ScrollArea {
let rect = Rect::from_x_y_ranges(ui.max_rect().x_range(), y_min..=y_max);
ui.allocate_new_ui(UiBuilder::new().max_rect(rect), |viewport_ui| {
ui.scope_builder(UiBuilder::new().max_rect(rect), |viewport_ui| {
viewport_ui.skip_ahead_auto_ids(min_row); // Make sure we get consistent IDs.
add_contents(viewport_ui, min_row..max_row)
})

View File

@ -1217,7 +1217,7 @@ impl TitleBar {
let button_rect = Rect::from_center_size(button_center, button_size);
let button_rect = button_rect.round_ui();
ui.allocate_new_ui(UiBuilder::new().max_rect(button_rect), |ui| {
ui.scope_builder(UiBuilder::new().max_rect(button_rect), |ui| {
collapsing.show_default_button_with_size(ui, button_size);
});
}

View File

@ -456,7 +456,7 @@ impl Grid {
ui_builder = ui_builder.sizing_pass().invisible();
}
ui.allocate_new_ui(ui_builder, |ui| {
ui.scope_builder(ui_builder, |ui| {
ui.horizontal(|ui| {
let is_color = color_picker.is_some();
let grid = GridLayout {

View File

@ -1498,7 +1498,7 @@ impl Ui {
let item_spacing = self.spacing().item_spacing;
let frame_rect = self.placer.next_space(desired_size, item_spacing);
let child_rect = self.placer.justify_and_align(frame_rect, desired_size);
self.allocate_new_ui(
self.scope_dyn(
UiBuilder::new().max_rect(child_rect).layout(layout),
add_contents,
)
@ -1515,7 +1515,7 @@ impl Ui {
max_rect: Rect,
add_contents: impl FnOnce(&mut Self) -> R,
) -> InnerResponse<R> {
self.allocate_new_ui(UiBuilder::new().max_rect(max_rect), add_contents)
self.scope_builder(UiBuilder::new().max_rect(max_rect), add_contents)
}
/// Allocated space (`UiBuilder::max_rect`) and then add content to it.
@ -1523,27 +1523,13 @@ impl Ui {
/// If the contents overflow, more space will be allocated.
/// When finished, the amount of space actually used (`min_rect`) will be allocated in the parent.
/// So you can request a lot of space and then use less.
#[deprecated = "Use `scope_builder` instead"]
pub fn allocate_new_ui<R>(
&mut self,
ui_builder: UiBuilder,
add_contents: impl FnOnce(&mut Self) -> R,
) -> InnerResponse<R> {
self.allocate_new_ui_dyn(ui_builder, Box::new(add_contents))
}
fn allocate_new_ui_dyn<'c, R>(
&mut self,
ui_builder: UiBuilder,
add_contents: Box<dyn FnOnce(&mut Self) -> R + 'c>,
) -> InnerResponse<R> {
let mut child_ui = self.new_child(ui_builder);
let inner = add_contents(&mut child_ui);
let rect = child_ui.min_rect();
let item_spacing = self.spacing().item_spacing;
self.placer.advance_after_rects(rect, rect, item_spacing);
register_rect(self, rect);
let response = self.interact(rect, child_ui.unique_id, Sense::hover());
InnerResponse::new(inner, response)
self.scope_dyn(ui_builder, Box::new(add_contents))
}
/// Convenience function to get a region to paint on.
@ -1749,7 +1735,7 @@ impl Ui {
///
/// See also [`Self::add`] and [`Self::add_sized`].
pub fn put(&mut self, max_rect: Rect, widget: impl Widget) -> Response {
self.allocate_new_ui(
self.scope_builder(
UiBuilder::new()
.max_rect(max_rect)
.layout(Layout::centered_and_justified(Direction::TopDown)),
@ -2640,7 +2626,7 @@ impl Ui {
/// See also [`Self::with_layout`] for more options.
#[inline]
pub fn vertical<R>(&mut self, add_contents: impl FnOnce(&mut Ui) -> R) -> InnerResponse<R> {
self.allocate_new_ui(
self.scope_builder(
UiBuilder::new().layout(Layout::top_down(Align::Min)),
add_contents,
)
@ -2662,7 +2648,7 @@ impl Ui {
&mut self,
add_contents: impl FnOnce(&mut Ui) -> R,
) -> InnerResponse<R> {
self.allocate_new_ui(
self.scope_builder(
UiBuilder::new().layout(Layout::top_down(Align::Center)),
add_contents,
)
@ -2683,7 +2669,7 @@ impl Ui {
&mut self,
add_contents: impl FnOnce(&mut Ui) -> R,
) -> InnerResponse<R> {
self.allocate_new_ui(
self.scope_builder(
UiBuilder::new().layout(Layout::top_down(Align::Center).with_cross_justify(true)),
add_contents,
)
@ -2709,7 +2695,7 @@ impl Ui {
layout: Layout,
add_contents: impl FnOnce(&mut Self) -> R,
) -> InnerResponse<R> {
self.allocate_new_ui(UiBuilder::new().layout(layout), add_contents)
self.scope_builder(UiBuilder::new().layout(layout), add_contents)
}
/// This will make the next added widget centered and justified in the available space.
@ -2719,7 +2705,7 @@ impl Ui {
&mut self,
add_contents: impl FnOnce(&mut Self) -> R,
) -> InnerResponse<R> {
self.allocate_new_ui(
self.scope_builder(
UiBuilder::new().layout(Layout::centered_and_justified(Direction::TopDown)),
add_contents,
)

View File

@ -114,7 +114,7 @@ fn title_bar_ui(ui: &mut egui::Ui, title_bar_rect: eframe::epaint::Rect, title:
ui.ctx().send_viewport_cmd(ViewportCommand::StartDrag);
}
ui.allocate_new_ui(
ui.scope_builder(
UiBuilder::new()
.max_rect(title_bar_rect)
.layout(egui::Layout::right_to_left(egui::Align::Center)),