remove Ui::set_layout
This commit is contained in:
parent
d8021843f8
commit
aad0391fef
8 changed files with 67 additions and 49 deletions
|
@ -58,8 +58,7 @@ pub fn combo_box(
|
|||
let frame_margin = frame.margin;
|
||||
frame.show(ui, |ui| {
|
||||
ui.set_min_width(button_response.rect.width() - 2.0 * frame_margin.x);
|
||||
ui.set_layout(Layout::justified(Direction::Vertical));
|
||||
menu_contents(ui);
|
||||
ui.with_layout(Layout::justified(Direction::Vertical), menu_contents);
|
||||
})
|
||||
});
|
||||
|
||||
|
@ -83,7 +82,7 @@ fn button_frame(
|
|||
let outer_rect_bounds = ui.available();
|
||||
let inner_rect = outer_rect_bounds.shrink2(margin);
|
||||
let where_to_put_background = ui.painter().add(PaintCmd::Noop);
|
||||
let mut content_ui = ui.child_ui(inner_rect);
|
||||
let mut content_ui = ui.child_ui(inner_rect, *ui.layout());
|
||||
add_contents(&mut content_ui);
|
||||
|
||||
let outer_rect = Rect::from_min_max(
|
||||
|
|
|
@ -81,7 +81,7 @@ impl Frame {
|
|||
let outer_rect_bounds = ui.available();
|
||||
let inner_rect = outer_rect_bounds.shrink2(self.margin);
|
||||
let where_to_put_background = ui.painter().add(PaintCmd::Noop);
|
||||
let content_ui = ui.child_ui(inner_rect);
|
||||
let content_ui = ui.child_ui(inner_rect, *ui.layout());
|
||||
Prepared {
|
||||
frame: self,
|
||||
outer_rect_bounds,
|
||||
|
|
|
@ -203,7 +203,7 @@ impl Resize {
|
|||
|
||||
content_clip_rect = content_clip_rect.intersect(ui.clip_rect()); // Respect parent region
|
||||
|
||||
let mut content_ui = ui.child_ui(inner_rect);
|
||||
let mut content_ui = ui.child_ui(inner_rect, *ui.layout());
|
||||
content_ui.set_clip_rect(content_clip_rect);
|
||||
|
||||
Prepared {
|
||||
|
|
|
@ -100,10 +100,13 @@ impl ScrollArea {
|
|||
let inner_size = outer_size - vec2(current_scroll_bar_width, 0.0);
|
||||
let inner_rect = Rect::from_min_size(ui.available().min, inner_size);
|
||||
|
||||
let mut content_ui = ui.child_ui(Rect::from_min_size(
|
||||
let mut content_ui = ui.child_ui(
|
||||
Rect::from_min_size(
|
||||
inner_rect.min - state.offset,
|
||||
vec2(inner_size.x, f32::INFINITY),
|
||||
));
|
||||
),
|
||||
*ui.layout(),
|
||||
);
|
||||
let mut content_clip_rect = inner_rect.expand(ui.style().visuals.clip_rect_margin);
|
||||
content_clip_rect = content_clip_rect.intersect(ui.clip_rect());
|
||||
content_clip_rect.max.x = ui.clip_rect().max.x - current_scroll_bar_width; // Nice handling of forced resizing beyond the possible
|
||||
|
|
|
@ -389,13 +389,15 @@ fn show_menu_bar(ui: &mut Ui, windows: &mut OpenWindows, env: &DemoEnvironment)
|
|||
(time.rem_euclid(60.0)).floor(),
|
||||
(time.rem_euclid(1.0) * 100.0).floor()
|
||||
);
|
||||
ui.set_layout(Layout::horizontal(Align::Max).reverse());
|
||||
|
||||
ui.with_layout(Layout::horizontal(Align::Max).reverse(), |ui| {
|
||||
if ui
|
||||
.add(Button::new(time).text_style(TextStyle::Monospace))
|
||||
.clicked
|
||||
{
|
||||
windows.fractal_clock = !windows.fractal_clock;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -360,20 +360,24 @@ impl Default for LayoutDemo {
|
|||
}
|
||||
|
||||
impl LayoutDemo {
|
||||
fn layout(&self) -> Layout {
|
||||
let layout = Layout::from_dir_align(self.dir, self.align);
|
||||
if self.reversed {
|
||||
layout.reverse()
|
||||
} else {
|
||||
layout
|
||||
}
|
||||
}
|
||||
|
||||
pub fn ui(&mut self, ui: &mut Ui) {
|
||||
Resize::default()
|
||||
.default_size([200.0, 100.0])
|
||||
.show(ui, |ui| self.content_ui(ui));
|
||||
.show(ui, |ui| {
|
||||
ui.with_layout(self.layout(), |ui| self.content_ui(ui))
|
||||
});
|
||||
}
|
||||
|
||||
pub fn content_ui(&mut self, ui: &mut Ui) {
|
||||
let layout = Layout::from_dir_align(self.dir, self.align);
|
||||
if self.reversed {
|
||||
ui.set_layout(layout.reverse());
|
||||
} else {
|
||||
ui.set_layout(layout);
|
||||
}
|
||||
|
||||
// ui.add(label!("Available space: {:?}", ui.available().size()));
|
||||
if ui.add(Button::new("Reset")).clicked {
|
||||
*self = Default::default();
|
||||
|
|
|
@ -111,8 +111,7 @@ fn menu_impl<'c>(
|
|||
style.visuals.widgets.inactive.bg_fill = TRANSPARENT;
|
||||
style.visuals.widgets.inactive.bg_stroke = Stroke::none();
|
||||
ui.set_style(style);
|
||||
ui.set_layout(Layout::justified(Direction::Vertical));
|
||||
add_contents(ui)
|
||||
ui.with_layout(Layout::justified(Direction::Vertical), add_contents);
|
||||
})
|
||||
});
|
||||
|
||||
|
|
|
@ -67,17 +67,24 @@ impl Ui {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn child_ui(&mut self, child_rect: Rect) -> Self {
|
||||
pub fn child_ui(&mut self, child_rect: Rect, layout: Layout) -> Self {
|
||||
let id = self.make_position_id(); // TODO: is this a good idea?
|
||||
self.child_count += 1;
|
||||
|
||||
let cursor = if layout.is_reversed() {
|
||||
child_rect.max
|
||||
} else {
|
||||
child_rect.min
|
||||
};
|
||||
|
||||
Ui {
|
||||
id,
|
||||
painter: self.painter.clone(),
|
||||
desired_rect: child_rect,
|
||||
child_bounds: Rect::from_min_size(child_rect.min, Vec2::zero()), // TODO: Rect::nothing() ?
|
||||
style: self.style().clone(),
|
||||
layout: self.layout,
|
||||
cursor: child_rect.min,
|
||||
layout,
|
||||
cursor,
|
||||
child_count: 0,
|
||||
}
|
||||
}
|
||||
|
@ -275,16 +282,6 @@ impl Ui {
|
|||
&self.layout
|
||||
}
|
||||
|
||||
// TODO: remove
|
||||
pub fn set_layout(&mut self, layout: Layout) {
|
||||
self.layout = layout;
|
||||
|
||||
// TODO: remove this HACK:
|
||||
if layout.is_reversed() {
|
||||
self.cursor = self.rect_finite().max;
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
pub fn contains_mouse(&self, rect: Rect) -> bool {
|
||||
|
@ -613,7 +610,7 @@ impl Ui {
|
|||
pub fn add_custom_contents(&mut self, size: Vec2, add_contents: impl FnOnce(&mut Ui)) -> Rect {
|
||||
let size = size.at_most(self.available().size());
|
||||
let child_rect = Rect::from_min_size(self.cursor, size);
|
||||
let mut child_ui = self.child_ui(child_rect);
|
||||
let mut child_ui = self.child_ui(child_rect, self.layout);
|
||||
add_contents(&mut child_ui);
|
||||
self.allocate_space(child_ui.bounding_size())
|
||||
}
|
||||
|
@ -621,7 +618,7 @@ impl Ui {
|
|||
/// Create a child ui. You can use this to temporarily change the Style of a sub-region, for instance.
|
||||
pub fn add_custom<R>(&mut self, add_contents: impl FnOnce(&mut Ui) -> R) -> (R, Rect) {
|
||||
let child_rect = self.available();
|
||||
let mut child_ui = self.child_ui(child_rect);
|
||||
let mut child_ui = self.child_ui(child_rect, self.layout);
|
||||
let r = add_contents(&mut child_ui);
|
||||
let size = child_ui.bounding_size();
|
||||
(r, self.allocate_space(size))
|
||||
|
@ -641,7 +638,7 @@ impl Ui {
|
|||
let child_rect = Rect::from_min_max(self.cursor + indent, self.bottom_right());
|
||||
let mut child_ui = Ui {
|
||||
id: self.id.with(id_source),
|
||||
..self.child_ui(child_rect)
|
||||
..self.child_ui(child_rect, self.layout)
|
||||
};
|
||||
let ret = add_contents(&mut child_ui);
|
||||
let size = child_ui.bounding_size();
|
||||
|
@ -677,10 +674,13 @@ impl Ui {
|
|||
Align::Center => self.available().width() / 2.0 - width / 2.0,
|
||||
Align::Max => self.available().width() - width,
|
||||
};
|
||||
self.child_ui(Rect::from_min_size(
|
||||
self.child_ui(
|
||||
Rect::from_min_size(
|
||||
self.cursor + vec2(x, 0.0),
|
||||
vec2(width, self.available().height()),
|
||||
))
|
||||
),
|
||||
self.layout,
|
||||
)
|
||||
}
|
||||
|
||||
/// Start a ui with horizontal layout.
|
||||
|
@ -716,8 +716,19 @@ impl Ui {
|
|||
add_contents: impl FnOnce(&mut Self) -> R,
|
||||
) -> (R, Rect) {
|
||||
let child_rect = Rect::from_min_size(self.cursor, initial_size);
|
||||
let mut child_ui = self.child_ui(child_rect);
|
||||
child_ui.set_layout(layout); // HACK: need a separate call right now
|
||||
let mut child_ui = self.child_ui(child_rect, layout);
|
||||
let ret = add_contents(&mut child_ui);
|
||||
let size = child_ui.bounding_size();
|
||||
let rect = self.allocate_space(size);
|
||||
(ret, rect)
|
||||
}
|
||||
|
||||
pub fn with_layout<R>(
|
||||
&mut self,
|
||||
layout: Layout,
|
||||
add_contents: impl FnOnce(&mut Self) -> R,
|
||||
) -> (R, Rect) {
|
||||
let mut child_ui = self.child_ui(self.rect(), layout);
|
||||
let ret = add_contents(&mut child_ui);
|
||||
let size = child_ui.bounding_size();
|
||||
let rect = self.allocate_space(size);
|
||||
|
@ -749,7 +760,7 @@ impl Ui {
|
|||
|
||||
Self {
|
||||
id: self.make_child_id(&("column", col_idx)),
|
||||
..self.child_ui(child_rect)
|
||||
..self.child_ui(child_rect, self.layout)
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
|
|
Loading…
Reference in a new issue