Remove hash_layout method from Widget trait

This commit is contained in:
Héctor Ramón Jiménez 2022-02-22 14:10:49 +07:00
parent 9fe5080153
commit 1313c94e3b
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
35 changed files with 105 additions and 636 deletions

View file

@ -8,12 +8,10 @@ use crate::overlay;
use crate::renderer;
use crate::touch;
use crate::{
Background, Clipboard, Color, Element, Hasher, Layout, Length, Padding,
Point, Rectangle, Shell, Vector, Widget,
Background, Clipboard, Color, Element, Layout, Length, Padding, Point,
Rectangle, Shell, Vector, Widget,
};
use std::hash::Hash;
pub use iced_style::button::{Style, StyleSheet};
/// A generic widget that produces a message when pressed.
@ -333,14 +331,6 @@ where
);
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.width.hash(state);
self.content.hash_layout(state);
}
fn overlay(
&mut self,
layout: Layout<'_>,

View file

@ -1,6 +1,4 @@
//! Show toggle controls using checkboxes.
use std::hash::Hash;
use crate::alignment;
use crate::event::{self, Event};
use crate::layout;
@ -10,8 +8,8 @@ use crate::text;
use crate::touch;
use crate::widget::{self, Row, Text};
use crate::{
Alignment, Clipboard, Element, Hasher, Layout, Length, Point, Rectangle,
Shell, Widget,
Alignment, Clipboard, Element, Layout, Length, Point, Rectangle, Shell,
Widget,
};
pub use iced_style::checkbox::{Style, StyleSheet};
@ -262,13 +260,6 @@ where
);
}
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.label.hash(state);
}
}
impl<'a, Message, Renderer> From<Checkbox<'a, Message, Renderer>>

View file

@ -1,14 +1,12 @@
//! Distribute content vertically.
use std::hash::Hash;
use crate::event::{self, Event};
use crate::layout;
use crate::mouse;
use crate::overlay;
use crate::renderer;
use crate::{
Alignment, Clipboard, Element, Hasher, Layout, Length, Padding, Point,
Rectangle, Shell, Widget,
Alignment, Clipboard, Element, Layout, Length, Padding, Point, Rectangle,
Shell, Widget,
};
use std::u32;
@ -199,23 +197,6 @@ where
}
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.width.hash(state);
self.height.hash(state);
self.max_width.hash(state);
self.max_height.hash(state);
self.align_items.hash(state);
self.spacing.hash(state);
self.padding.hash(state);
for child in &self.children {
child.widget.hash_layout(state);
}
}
fn overlay(
&mut self,
layout: Layout<'_>,

View file

@ -1,6 +1,4 @@
//! Decorate content and apply alignment.
use std::hash::Hash;
use crate::alignment::{self, Alignment};
use crate::event::{self, Event};
use crate::layout;
@ -8,8 +6,8 @@ use crate::mouse;
use crate::overlay;
use crate::renderer;
use crate::{
Background, Clipboard, Color, Element, Hasher, Layout, Length, Padding,
Point, Rectangle, Shell, Widget,
Background, Clipboard, Color, Element, Layout, Length, Padding, Point,
Rectangle, Shell, Widget,
};
use std::u32;
@ -219,21 +217,6 @@ where
);
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.padding.hash(state);
self.width.hash(state);
self.height.hash(state);
self.max_width.hash(state);
self.max_height.hash(state);
self.horizontal_alignment.hash(state);
self.vertical_alignment.hash(state);
self.content.hash_layout(state);
}
fn overlay(
&mut self,
layout: Layout<'_>,

View file

@ -6,8 +6,7 @@ use crate::image;
use crate::layout;
use crate::renderer;
use crate::{
ContentFit, Element, Hasher, Layout, Length, Point, Rectangle, Size,
Vector, Widget,
ContentFit, Element, Layout, Length, Point, Rectangle, Size, Vector, Widget,
};
use std::hash::Hash;
@ -149,16 +148,6 @@ where
render(renderer)
}
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.handle.hash(state);
self.width.hash(state);
self.height.hash(state);
self.content_fit.hash(state);
}
}
impl<'a, Message, Renderer, Handle> From<Image<Handle>>

View file

@ -5,8 +5,8 @@ use crate::layout;
use crate::mouse;
use crate::renderer;
use crate::{
Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Shell, Size,
Vector, Widget,
Clipboard, Element, Layout, Length, Point, Rectangle, Shell, Size, Vector,
Widget,
};
use std::hash::Hash;
@ -335,17 +335,6 @@ where
});
});
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.width.hash(state);
self.height.hash(state);
self.padding.hash(state);
self.handle.hash(state);
}
}
/// The local state of a [`Viewer`].

View file

@ -34,8 +34,8 @@ use crate::overlay;
use crate::renderer;
use crate::touch;
use crate::{
Clipboard, Color, Element, Hasher, Layout, Length, Point, Rectangle, Shell,
Size, Vector, Widget,
Clipboard, Color, Element, Layout, Length, Point, Rectangle, Shell, Size,
Vector, Widget,
};
pub use iced_style::pane_grid::{Line, StyleSheet};
@ -666,21 +666,6 @@ where
}
}
fn hash_layout(&self, state: &mut Hasher) {
use std::hash::Hash;
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.width.hash(state);
self.height.hash(state);
self.state.hash_layout(state);
for (_, element) in &self.elements {
element.hash_layout(state);
}
}
fn overlay(
&mut self,
layout: Layout<'_>,

View file

@ -5,9 +5,7 @@ use crate::overlay;
use crate::renderer;
use crate::widget::container;
use crate::widget::pane_grid::TitleBar;
use crate::{
Clipboard, Element, Hasher, Layout, Point, Rectangle, Shell, Size,
};
use crate::{Clipboard, Element, Layout, Point, Rectangle, Shell, Size};
/// The content of a [`Pane`].
///
@ -236,14 +234,6 @@ where
.max(title_bar_interaction)
}
pub(crate) fn hash_layout(&self, state: &mut Hasher) {
if let Some(title_bar) = &self.title_bar {
title_bar.hash_layout(state);
}
self.body.hash_layout(state);
}
pub(crate) fn overlay(
&mut self,
layout: Layout<'_>,

View file

@ -1,7 +1,7 @@
use crate::widget::pane_grid::{
Axis, Configuration, Direction, Node, Pane, Split,
};
use crate::{Hasher, Point, Rectangle, Size};
use crate::{Point, Rectangle, Size};
use std::collections::{BTreeMap, HashMap};
@ -292,10 +292,4 @@ impl Internal {
pub fn idle(&mut self) {
self.action = Action::Idle;
}
pub fn hash_layout(&self, hasher: &mut Hasher) {
use std::hash::Hash;
self.layout.hash(hasher);
}
}

View file

@ -5,7 +5,7 @@ use crate::overlay;
use crate::renderer;
use crate::widget::container;
use crate::{
Clipboard, Element, Hasher, Layout, Padding, Point, Rectangle, Shell, Size,
Clipboard, Element, Layout, Padding, Point, Rectangle, Shell, Size,
};
/// The title bar of a [`Pane`].
@ -157,17 +157,6 @@ where
}
}
pub(crate) fn hash_layout(&self, hasher: &mut Hasher) {
use std::hash::Hash;
self.content.hash_layout(hasher);
self.padding.hash(hasher);
if let Some(controls) = &self.controls {
controls.hash_layout(hasher);
}
}
pub(crate) fn layout(
&self,
renderer: &Renderer,

View file

@ -10,8 +10,8 @@ use crate::renderer;
use crate::text::{self, Text};
use crate::touch;
use crate::{
Clipboard, Element, Hasher, Layout, Length, Padding, Point, Rectangle,
Shell, Size, Widget,
Clipboard, Element, Layout, Length, Padding, Point, Rectangle, Shell, Size,
Widget,
};
use std::borrow::Cow;
@ -220,24 +220,6 @@ where
layout::Node::new(size)
}
fn hash_layout(&self, state: &mut Hasher) {
use std::hash::Hash as _;
match self.width {
Length::Shrink => {
self.placeholder.hash(state);
self.options
.iter()
.map(ToString::to_string)
.for_each(|label| label.hash(state));
}
_ => {
self.width.hash(state);
}
}
}
fn on_event(
&mut self,
event: Event,

View file

@ -1,11 +1,9 @@
//! Provide progress feedback to your users.
use crate::layout;
use crate::renderer;
use crate::{
Color, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget,
};
use crate::{Color, Element, Layout, Length, Point, Rectangle, Size, Widget};
use std::{hash::Hash, ops::RangeInclusive};
use std::ops::RangeInclusive;
pub use iced_style::progress_bar::{Style, StyleSheet};
@ -141,14 +139,6 @@ where
);
}
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.width.hash(state);
self.height.hash(state);
}
}
impl<'a, Message, Renderer> From<ProgressBar<'a>>

View file

@ -1,6 +1,4 @@
//! Create choices using radio buttons.
use std::hash::Hash;
use crate::alignment;
use crate::event::{self, Event};
use crate::layout;
@ -10,8 +8,8 @@ use crate::text;
use crate::touch;
use crate::widget::{self, Row, Text};
use crate::{
Alignment, Clipboard, Color, Element, Hasher, Layout, Length, Point,
Rectangle, Shell, Widget,
Alignment, Clipboard, Color, Element, Layout, Length, Point, Rectangle,
Shell, Widget,
};
pub use iced_style::radio::{Style, StyleSheet};
@ -280,13 +278,6 @@ where
);
}
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.label.hash(state);
}
}
impl<'a, Message, Renderer> From<Radio<'a, Message, Renderer>>

View file

@ -5,11 +5,10 @@ use crate::mouse;
use crate::overlay;
use crate::renderer;
use crate::{
Alignment, Clipboard, Element, Hasher, Layout, Length, Padding, Point,
Rectangle, Shell, Widget,
Alignment, Clipboard, Element, Layout, Length, Padding, Point, Rectangle,
Shell, Widget,
};
use std::hash::Hash;
use std::u32;
/// A container that distributes its contents horizontally.
@ -198,23 +197,6 @@ where
}
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.width.hash(state);
self.height.hash(state);
self.max_width.hash(state);
self.max_height.hash(state);
self.align_items.hash(state);
self.spacing.hash(state);
self.padding.hash(state);
for child in &self.children {
child.widget.hash_layout(state);
}
}
fn overlay(
&mut self,
layout: Layout<'_>,

View file

@ -1,11 +1,7 @@
//! Display a horizontal or vertical rule for dividing content.
use crate::layout;
use crate::renderer;
use crate::{
Color, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget,
};
use std::hash::Hash;
use crate::{Color, Element, Layout, Length, Point, Rectangle, Size, Widget};
pub use iced_style::rule::{FillMode, Style, StyleSheet};
@ -122,14 +118,6 @@ where
style.color,
);
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.width.hash(state);
self.height.hash(state);
}
}
impl<'a, Message, Renderer> From<Rule<'a>> for Element<'a, Message, Renderer>

View file

@ -7,11 +7,11 @@ use crate::renderer;
use crate::touch;
use crate::widget::Column;
use crate::{
Alignment, Background, Clipboard, Color, Element, Hasher, Layout, Length,
Padding, Point, Rectangle, Shell, Size, Vector, Widget,
Alignment, Background, Clipboard, Color, Element, Layout, Length, Padding,
Point, Rectangle, Shell, Size, Vector, Widget,
};
use std::{f32, hash::Hash, u32};
use std::{f32, u32};
pub use iced_style::scrollable::StyleSheet;
@ -570,16 +570,6 @@ where
}
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.height.hash(state);
self.max_height.hash(state);
self.content.hash_layout(state)
}
fn overlay(
&mut self,
layout: Layout<'_>,

View file

@ -7,11 +7,10 @@ use crate::mouse;
use crate::renderer;
use crate::touch;
use crate::{
Background, Clipboard, Color, Element, Hasher, Layout, Length, Point,
Rectangle, Shell, Size, Widget,
Background, Clipboard, Color, Element, Layout, Length, Point, Rectangle,
Shell, Size, Widget,
};
use std::hash::Hash;
use std::ops::RangeInclusive;
pub use iced_style::slider::{Handle, HandleShape, Style, StyleSheet};
@ -374,13 +373,6 @@ where
mouse::Interaction::default()
}
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.width.hash(state);
}
}
impl<'a, T, Message, Renderer> From<Slider<'a, T, Message>>

View file

@ -1,9 +1,7 @@
//! Distribute content vertically.
use crate::layout;
use crate::renderer;
use crate::{Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget};
use std::hash::Hash;
use crate::{Element, Layout, Length, Point, Rectangle, Size, Widget};
/// An amount of empty space.
///
@ -68,13 +66,6 @@ where
_viewport: &Rectangle,
) {
}
fn hash_layout(&self, state: &mut Hasher) {
std::any::TypeId::of::<Space>().hash(state);
self.width.hash(state);
self.height.hash(state);
}
}
impl<'a, Message, Renderer> From<Space> for Element<'a, Message, Renderer>

View file

@ -3,11 +3,9 @@ use crate::layout;
use crate::renderer;
use crate::svg::{self, Handle};
use crate::{
ContentFit, Element, Hasher, Layout, Length, Point, Rectangle, Size,
Vector, Widget,
ContentFit, Element, Layout, Length, Point, Rectangle, Size, Vector, Widget,
};
use std::hash::Hash;
use std::path::PathBuf;
/// A vector graphics image.
@ -146,15 +144,6 @@ where
render(renderer)
}
}
fn hash_layout(&self, state: &mut Hasher) {
std::any::TypeId::of::<Svg>().hash(state);
self.handle.hash(state);
self.width.hash(state);
self.height.hash(state);
self.content_fit.hash(state);
}
}
impl<'a, Message, Renderer> From<Svg> for Element<'a, Message, Renderer>

View file

@ -3,11 +3,7 @@ use crate::alignment;
use crate::layout;
use crate::renderer;
use crate::text;
use crate::{
Color, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget,
};
use std::hash::Hash;
use crate::{Color, Element, Layout, Length, Point, Rectangle, Size, Widget};
/// A paragraph of text.
///
@ -151,16 +147,6 @@ where
self.vertical_alignment,
);
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.content.hash(state);
self.size.hash(state);
self.width.hash(state);
self.height.hash(state);
}
}
/// Draws text using the same logic as the [`Text`] widget.

View file

@ -20,8 +20,8 @@ use crate::renderer;
use crate::text::{self, Text};
use crate::touch;
use crate::{
Clipboard, Color, Element, Hasher, Layout, Length, Padding, Point,
Rectangle, Shell, Size, Vector, Widget,
Clipboard, Color, Element, Layout, Length, Padding, Point, Rectangle,
Shell, Size, Vector, Widget,
};
use std::u32;
@ -783,17 +783,6 @@ where
) {
self.draw(renderer, layout, cursor_position, None)
}
fn hash_layout(&self, state: &mut Hasher) {
use std::{any::TypeId, hash::Hash};
struct Marker;
TypeId::of::<Marker>().hash(state);
self.width.hash(state);
self.max_width.hash(state);
self.padding.hash(state);
self.size.hash(state);
}
}
impl<'a, Message, Renderer> From<TextInput<'a, Message, Renderer>>

View file

@ -1,5 +1,4 @@
//! Show toggle controls using togglers.
use std::hash::Hash;
use crate::alignment;
use crate::event;
@ -9,8 +8,8 @@ use crate::renderer;
use crate::text;
use crate::widget::{Row, Text};
use crate::{
Alignment, Clipboard, Element, Event, Hasher, Layout, Length, Point,
Rectangle, Shell, Widget,
Alignment, Clipboard, Element, Event, Layout, Length, Point, Rectangle,
Shell, Widget,
};
pub use iced_style::toggler::{Style, StyleSheet};
@ -295,13 +294,6 @@ where
style.foreground,
);
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.label.hash(state)
}
}
impl<'a, Message, Renderer> From<Toggler<'a, Message, Renderer>>

View file

@ -1,8 +1,4 @@
//! Display a widget over another.
use std::hash::Hash;
use iced_core::Rectangle;
use crate::event;
use crate::layout;
use crate::mouse;
@ -11,8 +7,8 @@ use crate::text;
use crate::widget::container;
use crate::widget::text::Text;
use crate::{
Clipboard, Element, Event, Hasher, Layout, Length, Padding, Point, Shell,
Size, Vector, Widget,
Clipboard, Element, Event, Layout, Length, Padding, Point, Rectangle,
Shell, Size, Vector, Widget,
};
/// An element to display a widget over another.
@ -268,13 +264,6 @@ where
});
}
}
fn hash_layout(&self, state: &mut Hasher) {
struct Marker;
std::any::TypeId::of::<Marker>().hash(state);
self.content.hash_layout(state);
}
}
impl<'a, Message, Renderer> From<Tooltip<'a, Message, Renderer>>