Merge branch 'master' into dev/system-information
This commit is contained in:
commit
b440df9afb
7 changed files with 49 additions and 19 deletions
7
.github/ISSUE_TEMPLATE/BUG-REPORT.yml
vendored
7
.github/ISSUE_TEMPLATE/BUG-REPORT.yml
vendored
|
|
@ -57,10 +57,13 @@ body:
|
||||||
id: version
|
id: version
|
||||||
attributes:
|
attributes:
|
||||||
label: Version
|
label: Version
|
||||||
description: What version of iced are you using?
|
description: |
|
||||||
|
We only offer support for the `0.4` release on crates.io and the `master` branch on this repository. Which version are you using? Please make sure you are using the latest patch available (e.g. run `cargo update`).
|
||||||
|
|
||||||
|
If you are using an older release, please upgrade to `0.4` before filing an issue.
|
||||||
options:
|
options:
|
||||||
- master
|
- master
|
||||||
- 0.3.0
|
- 0.4
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,9 @@ Add `iced` as a dependency in your `Cargo.toml`:
|
||||||
iced = "0.4"
|
iced = "0.4"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If your project is using a Rust edition older than 2021, then you will need to
|
||||||
|
set `resolver = "2"` in the `[package]` section as well.
|
||||||
|
|
||||||
__Iced moves fast and the `master` branch can contain breaking changes!__ If
|
__Iced moves fast and the `master` branch can contain breaking changes!__ If
|
||||||
you want to learn about a specific release, check out [the release list].
|
you want to learn about a specific release, check out [the release list].
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "iced_pure"
|
name = "iced_pure"
|
||||||
version = "0.2.0"
|
version = "0.2.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
description = "Pure widgets for Iced"
|
description = "Pure widgets for Iced"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@ use iced_native::mouse;
|
||||||
use iced_native::renderer;
|
use iced_native::renderer;
|
||||||
use iced_native::{Clipboard, Length, Point, Rectangle, Shell};
|
use iced_native::{Clipboard, Length, Point, Rectangle, Shell};
|
||||||
|
|
||||||
|
use std::borrow::Borrow;
|
||||||
|
|
||||||
/// A generic [`Widget`].
|
/// A generic [`Widget`].
|
||||||
///
|
///
|
||||||
/// It is useful to build composable user interfaces that do not leak
|
/// It is useful to build composable user interfaces that do not leak
|
||||||
|
|
@ -321,3 +323,19 @@ where
|
||||||
.map(move |overlay| overlay.map(mapper))
|
.map(move |overlay| overlay.map(mapper))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a, Message, Renderer> Borrow<dyn Widget<Message, Renderer> + 'a>
|
||||||
|
for Element<'a, Message, Renderer>
|
||||||
|
{
|
||||||
|
fn borrow(&self) -> &(dyn Widget<Message, Renderer> + 'a) {
|
||||||
|
self.widget.borrow()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, Message, Renderer> Borrow<dyn Widget<Message, Renderer> + 'a>
|
||||||
|
for &Element<'a, Message, Renderer>
|
||||||
|
{
|
||||||
|
fn borrow(&self) -> &(dyn Widget<Message, Renderer> + 'a) {
|
||||||
|
self.widget.borrow()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -202,7 +202,7 @@ pub fn horizontal_rule<'a>(height: u16) -> widget::Rule<'a> {
|
||||||
///
|
///
|
||||||
/// [`Rule`]: widget::Rule
|
/// [`Rule`]: widget::Rule
|
||||||
pub fn vertical_rule<'a>(width: u16) -> widget::Rule<'a> {
|
pub fn vertical_rule<'a>(width: u16) -> widget::Rule<'a> {
|
||||||
widget::Rule::horizontal(width)
|
widget::Rule::vertical(width)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a new [`ProgressBar`].
|
/// Creates a new [`ProgressBar`].
|
||||||
|
|
|
||||||
|
|
@ -87,12 +87,11 @@
|
||||||
#![forbid(unsafe_code)]
|
#![forbid(unsafe_code)]
|
||||||
#![forbid(rust_2018_idioms)]
|
#![forbid(rust_2018_idioms)]
|
||||||
|
|
||||||
|
pub mod flex;
|
||||||
pub mod helpers;
|
pub mod helpers;
|
||||||
pub mod overlay;
|
pub mod overlay;
|
||||||
pub mod widget;
|
pub mod widget;
|
||||||
|
|
||||||
pub(crate) mod flex;
|
|
||||||
|
|
||||||
mod element;
|
mod element;
|
||||||
|
|
||||||
pub use element::Element;
|
pub use element::Element;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
//! Store internal widget state in a state tree to ensure continuity.
|
//! Store internal widget state in a state tree to ensure continuity.
|
||||||
use crate::Element;
|
use crate::Widget;
|
||||||
|
|
||||||
use std::any::{self, Any};
|
use std::any::{self, Any};
|
||||||
|
use std::borrow::Borrow;
|
||||||
|
|
||||||
/// A persistent state widget tree.
|
/// A persistent state widget tree.
|
||||||
///
|
///
|
||||||
|
|
@ -28,13 +29,15 @@ impl Tree {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a new [`Tree`] for the provided [`Element`].
|
/// Creates a new [`Tree`] for the provided [`Element`].
|
||||||
pub fn new<Message, Renderer>(
|
pub fn new<'a, Message, Renderer>(
|
||||||
element: &Element<'_, Message, Renderer>,
|
widget: impl Borrow<dyn Widget<Message, Renderer> + 'a>,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
|
let widget = widget.borrow();
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
tag: element.as_widget().tag(),
|
tag: widget.tag(),
|
||||||
state: element.as_widget().state(),
|
state: widget.state(),
|
||||||
children: element.as_widget().children(),
|
children: widget.children(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -46,23 +49,27 @@ impl Tree {
|
||||||
/// Otherwise, the whole [`Tree`] is recreated.
|
/// Otherwise, the whole [`Tree`] is recreated.
|
||||||
///
|
///
|
||||||
/// [`Widget::diff`]: crate::Widget::diff
|
/// [`Widget::diff`]: crate::Widget::diff
|
||||||
pub fn diff<Message, Renderer>(
|
pub fn diff<'a, Message, Renderer>(
|
||||||
&mut self,
|
&mut self,
|
||||||
new: &Element<'_, Message, Renderer>,
|
new: impl Borrow<dyn Widget<Message, Renderer> + 'a>,
|
||||||
) {
|
) {
|
||||||
if self.tag == new.as_widget().tag() {
|
if self.tag == new.borrow().tag() {
|
||||||
new.as_widget().diff(self)
|
new.borrow().diff(self)
|
||||||
} else {
|
} else {
|
||||||
*self = Self::new(new);
|
*self = Self::new(new);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Reconciliates the children of the tree with the provided list of [`Element`].
|
/// Reconciliates the children of the tree with the provided list of [`Element`].
|
||||||
pub fn diff_children<Message, Renderer>(
|
pub fn diff_children<'a, Message, Renderer>(
|
||||||
&mut self,
|
&mut self,
|
||||||
new_children: &[Element<'_, Message, Renderer>],
|
new_children: &[impl Borrow<dyn Widget<Message, Renderer> + 'a>],
|
||||||
) {
|
) {
|
||||||
self.diff_children_custom(new_children, Self::diff, Self::new)
|
self.diff_children_custom(
|
||||||
|
new_children,
|
||||||
|
|tree, widget| tree.diff(widget.borrow()),
|
||||||
|
|widget| Self::new(widget.borrow()),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Reconciliates the children of the tree with the provided list of [`Element`] using custom
|
/// Reconciliates the children of the tree with the provided list of [`Element`] using custom
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue