From feee2bacc313dd15768129de5baabb3aece0e8ec Mon Sep 17 00:00:00 2001 From: Lucy Date: Mon, 28 Feb 2022 15:23:01 -0500 Subject: [PATCH] Allow LabeledItem to be used as a regular widget, hopefully --- widgets/src/labeled_item/imp.rs | 4 ++-- widgets/src/labeled_item/mod.rs | 20 +++++++++++++++++--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/widgets/src/labeled_item/imp.rs b/widgets/src/labeled_item/imp.rs index 690febd..a822ce8 100644 --- a/widgets/src/labeled_item/imp.rs +++ b/widgets/src/labeled_item/imp.rs @@ -1,5 +1,5 @@ use gtk4::{prelude::*, Align, Label, Orientation, Widget}; -use relm4::{ComponentBuilder, ComponentParts, Sender, SimpleComponent}; +use relm4::{ComponentParts, Sender, SimpleComponent}; use std::cell::RefCell; #[derive(Debug)] @@ -107,7 +107,7 @@ impl SimpleComponent for LabeledItem { root: &Self::Root, input: &Sender, _output: &Sender, - ) -> ComponentParts { + ) -> ComponentParts { let model = LabeledItem { _title: String::default(), _desc: None, diff --git a/widgets/src/labeled_item/mod.rs b/widgets/src/labeled_item/mod.rs index 694b353..366a822 100644 --- a/widgets/src/labeled_item/mod.rs +++ b/widgets/src/labeled_item/mod.rs @@ -2,15 +2,15 @@ mod imp; use gtk4::{glib::IsA, prelude::*, Align, Orientation, Widget}; use relm4::{Component, ComponentController, ComponentParts, Controller}; -use std::cell::Ref; +use std::{cell::Ref, ops::Deref}; pub struct LabeledItem { root: gtk4::Box, - controller: Controller, + controller: Controller, } impl LabeledItem { - fn inner(&self) -> Ref<'_, ComponentParts> { + fn inner(&self) -> Ref<'_, ComponentParts> { self.controller.state().get() } @@ -72,3 +72,17 @@ impl Default for LabeledItem { Self { root, controller } } } + +impl AsRef for LabeledItem { + fn as_ref(&self) -> &Widget { + self.root.upcast_ref() + } +} + +impl Deref for LabeledItem { + type Target = gtk4::Box; + + fn deref(&self) -> &Self::Target { + &self.root + } +}