summaryrefslogtreecommitdiffstats
path: root/pure/src/widget
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-02-12 14:26:17 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-02-12 14:26:17 +0700
commit178914ec23a107cb7fa38c39be30a35d235248ab (patch)
treea23d735f80296a9a27a06f5de6fdefe2f9fc8ded /pure/src/widget
parentdee3dba632709f57b5573dbe28827ad481287648 (diff)
downloadiced-178914ec23a107cb7fa38c39be30a35d235248ab.tar.gz
iced-178914ec23a107cb7fa38c39be30a35d235248ab.tar.bz2
iced-178914ec23a107cb7fa38c39be30a35d235248ab.zip
Implement `Checkbox` in `iced_pure`
Diffstat (limited to 'pure/src/widget')
-rw-r--r--pure/src/widget/checkbox.rs82
1 files changed, 82 insertions, 0 deletions
diff --git a/pure/src/widget/checkbox.rs b/pure/src/widget/checkbox.rs
new file mode 100644
index 00000000..8ee2b7bb
--- /dev/null
+++ b/pure/src/widget/checkbox.rs
@@ -0,0 +1,82 @@
+use crate::{Element, Tree, Widget};
+
+use iced_native::layout::{self, Layout};
+use iced_native::renderer;
+use iced_native::text;
+use iced_native::{Hasher, Length, Point, Rectangle};
+
+use std::any::{self, Any};
+
+pub use iced_native::widget::Checkbox;
+
+impl<'a, Message, Renderer> Widget<Message, Renderer>
+ for Checkbox<'a, Message, Renderer>
+where
+ Renderer: text::Renderer,
+{
+ fn tag(&self) -> any::TypeId {
+ any::TypeId::of::<()>()
+ }
+
+ fn state(&self) -> Box<dyn Any> {
+ Box::new(())
+ }
+
+ fn children(&self) -> &[Element<Message, Renderer>] {
+ &[]
+ }
+
+ fn width(&self) -> Length {
+ <Self as iced_native::Widget<Message, Renderer>>::width(self)
+ }
+
+ fn height(&self) -> Length {
+ <Self as iced_native::Widget<Message, Renderer>>::height(self)
+ }
+
+ fn layout(
+ &self,
+ renderer: &Renderer,
+ limits: &layout::Limits,
+ ) -> layout::Node {
+ <Self as iced_native::Widget<Message, Renderer>>::layout(
+ self, renderer, limits,
+ )
+ }
+
+ fn draw(
+ &self,
+ _tree: &Tree,
+ renderer: &mut Renderer,
+ style: &renderer::Style,
+ layout: Layout<'_>,
+ cursor_position: Point,
+ viewport: &Rectangle,
+ ) {
+ <Self as iced_native::Widget<Message, Renderer>>::draw(
+ self,
+ renderer,
+ style,
+ layout,
+ cursor_position,
+ viewport,
+ )
+ }
+
+ fn hash_layout(&self, state: &mut Hasher) {
+ <Self as iced_native::Widget<Message, Renderer>>::hash_layout(
+ self, state,
+ )
+ }
+}
+
+impl<'a, Message, Renderer> Into<Element<'a, Message, Renderer>>
+ for Checkbox<'a, Message, Renderer>
+where
+ Message: 'a,
+ Renderer: text::Renderer + 'a,
+{
+ fn into(self) -> Element<'a, Message, Renderer> {
+ Element::new(self)
+ }
+}