From d92fd419d36daa5611f2b2802ced96e680dd03f6 Mon Sep 17 00:00:00 2001 From: Elias Projahn Date: Tue, 2 Feb 2021 11:38:22 +0100 Subject: [PATCH] Move widget trait to widgets --- src/navigator/mod.rs | 7 +------ src/preferences/login.rs | 3 ++- src/preferences/register.rs | 3 ++- src/widgets/mod.rs | 14 ++++++++++++++ 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/navigator/mod.rs b/src/navigator/mod.rs index 93dde69..873f28a 100644 --- a/src/navigator/mod.rs +++ b/src/navigator/mod.rs @@ -1,4 +1,5 @@ use crate::backend::Backend; +use crate::widgets::Widget; use futures_channel::oneshot; use futures_channel::oneshot::{Receiver, Sender}; use glib::clone; @@ -16,12 +17,6 @@ pub trait Screen: Widget { fn new(input: I, navigation_handle: NavigationHandle) -> Rc where Self: Sized; } -/// Something that can be represented as a GTK widget. -pub trait Widget { - /// Get the widget. - fn get_widget(&self) -> gtk::Widget; -} - /// An accessor to navigation functionality for screens. pub struct NavigationHandle { /// The backend, in case the screen needs it. diff --git a/src/preferences/login.rs b/src/preferences/login.rs index 2a41902..452e77d 100644 --- a/src/preferences/login.rs +++ b/src/preferences/login.rs @@ -1,7 +1,8 @@ use super::register::RegisterDialog; use crate::push; use crate::backend::{Backend, LoginData}; -use crate::navigator::{NavigationHandle, Screen, Widget}; +use crate::navigator::{NavigationHandle, Screen}; +use crate::widgets::Widget; use glib::clone; use gtk::prelude::*; use gtk_macros::get_widget; diff --git a/src/preferences/register.rs b/src/preferences/register.rs index f8f4ef0..6ae1d81 100644 --- a/src/preferences/register.rs +++ b/src/preferences/register.rs @@ -1,5 +1,6 @@ use crate::backend::{Backend, LoginData, UserRegistration}; -use crate::navigator::{NavigationHandle, Screen, Widget}; +use crate::navigator::{NavigationHandle, Screen}; +use crate::widgets::Widget; use glib::clone; use gtk::prelude::*; use gtk_macros::get_widget; diff --git a/src/widgets/mod.rs b/src/widgets/mod.rs index bb85c93..d94d67e 100644 --- a/src/widgets/mod.rs +++ b/src/widgets/mod.rs @@ -1,3 +1,5 @@ +use gtk::prelude::*; + pub mod editor; pub use editor::*; @@ -29,3 +31,15 @@ pub mod upload_section; pub use upload_section::*; mod indexed_list_model; + +/// Something that can be represented as a GTK widget. +pub trait Widget { + /// Get the widget. + fn get_widget(&self) -> gtk::Widget; +} + +impl> Widget for W { + fn get_widget(&self) -> gtk::Widget { + self.clone().upcast() + } +}