Merge branch 'master' into feature/test-recorder
This commit is contained in:
commit
9e81c2b9e8
88 changed files with 1225 additions and 1158 deletions
|
|
@ -6,7 +6,7 @@ use crate::container::{self, Container};
|
|||
use crate::core;
|
||||
use crate::core::widget::operation::{self, Operation};
|
||||
use crate::core::window;
|
||||
use crate::core::{Element, Length, Pixels, Widget};
|
||||
use crate::core::{Element, Length, Pixels, Size, Widget};
|
||||
use crate::float::{self, Float};
|
||||
use crate::keyed;
|
||||
use crate::overlay;
|
||||
|
|
@ -23,7 +23,9 @@ use crate::text_input::{self, TextInput};
|
|||
use crate::toggler::{self, Toggler};
|
||||
use crate::tooltip::{self, Tooltip};
|
||||
use crate::vertical_slider::{self, VerticalSlider};
|
||||
use crate::{Column, Grid, MouseArea, Pin, Row, Sensor, Space, Stack, Themer};
|
||||
use crate::{
|
||||
Column, Grid, MouseArea, Pin, Responsive, Row, Sensor, Space, Stack, Themer,
|
||||
};
|
||||
|
||||
use std::borrow::Borrow;
|
||||
use std::ops::RangeInclusive;
|
||||
|
|
@ -607,12 +609,12 @@ where
|
|||
}
|
||||
|
||||
fn layout(
|
||||
&self,
|
||||
&mut self,
|
||||
tree: &mut Tree,
|
||||
renderer: &Renderer,
|
||||
limits: &layout::Limits,
|
||||
) -> layout::Node {
|
||||
self.content.as_widget().layout(tree, renderer, limits)
|
||||
self.content.as_widget_mut().layout(tree, renderer, limits)
|
||||
}
|
||||
|
||||
fn draw(
|
||||
|
|
@ -631,14 +633,14 @@ where
|
|||
}
|
||||
|
||||
fn operate(
|
||||
&self,
|
||||
&mut self,
|
||||
state: &mut Tree,
|
||||
layout: Layout<'_>,
|
||||
renderer: &Renderer,
|
||||
operation: &mut dyn operation::Operation,
|
||||
) {
|
||||
self.content
|
||||
.as_widget()
|
||||
.as_widget_mut()
|
||||
.operate(state, layout, renderer, operation);
|
||||
}
|
||||
|
||||
|
|
@ -770,18 +772,18 @@ where
|
|||
}
|
||||
|
||||
fn layout(
|
||||
&self,
|
||||
&mut self,
|
||||
tree: &mut Tree,
|
||||
renderer: &Renderer,
|
||||
limits: &layout::Limits,
|
||||
) -> layout::Node {
|
||||
let base = self.base.as_widget().layout(
|
||||
let base = self.base.as_widget_mut().layout(
|
||||
&mut tree.children[0],
|
||||
renderer,
|
||||
limits,
|
||||
);
|
||||
|
||||
let top = self.top.as_widget().layout(
|
||||
let top = self.top.as_widget_mut().layout(
|
||||
&mut tree.children[1],
|
||||
renderer,
|
||||
&layout::Limits::new(Size::ZERO, base.size()),
|
||||
|
|
@ -832,18 +834,20 @@ where
|
|||
}
|
||||
|
||||
fn operate(
|
||||
&self,
|
||||
&mut self,
|
||||
tree: &mut Tree,
|
||||
layout: Layout<'_>,
|
||||
renderer: &Renderer,
|
||||
operation: &mut dyn operation::Operation,
|
||||
) {
|
||||
let children = [&self.base, &self.top]
|
||||
let children = [&mut self.base, &mut self.top]
|
||||
.into_iter()
|
||||
.zip(layout.children().zip(&mut tree.children));
|
||||
|
||||
for (child, (layout, tree)) in children {
|
||||
child.as_widget().operate(tree, layout, renderer, operation);
|
||||
child
|
||||
.as_widget_mut()
|
||||
.operate(tree, layout, renderer, operation);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2117,3 +2121,18 @@ where
|
|||
{
|
||||
Float::new(content)
|
||||
}
|
||||
|
||||
/// Creates a new [`Responsive`] widget with a closure that produces its
|
||||
/// contents.
|
||||
///
|
||||
/// The `view` closure will receive the maximum available space for
|
||||
/// the [`Responsive`] during layout. You can use this [`Size`] to
|
||||
/// conditionally build the contents.
|
||||
pub fn responsive<'a, Message, Theme, Renderer>(
|
||||
f: impl Fn(Size) -> Element<'a, Message, Theme, Renderer> + 'a,
|
||||
) -> Responsive<'a, Message, Theme, Renderer>
|
||||
where
|
||||
Renderer: core::Renderer,
|
||||
{
|
||||
Responsive::new(f)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue