diff --git a/fitnesstrax/app/src/app_window.rs b/fitnesstrax/app/src/app_window.rs
index 081c755..2d8722e 100644
--- a/fitnesstrax/app/src/app_window.rs
+++ b/fitnesstrax/app/src/app_window.rs
@@ -87,7 +87,7 @@ impl AppWindow {
let initial_view = View::Placeholder(PlaceholderView::new().upcast());
layout.append(&header);
- layout.append(initial_view.widget());
+ layout.append(&initial_view.widget());
window.set_content(Some(&layout));
window.present();
@@ -130,9 +130,9 @@ impl AppWindow {
// position.
fn swap_main(&self, view: View) {
let mut current_widget = self.current_view.borrow_mut();
- self.layout.remove(&*current_widget.widget());
+ self.layout.remove(¤t_widget.widget());
*current_widget = view;
- self.layout.append(&*current_widget.widget());
+ self.layout.append(¤t_widget.widget());
}
fn construct_view(&self, view: ViewName) -> View {
diff --git a/fitnesstrax/app/src/views/mod.rs b/fitnesstrax/app/src/views/mod.rs
index 511d2ce..123929f 100644
--- a/fitnesstrax/app/src/views/mod.rs
+++ b/fitnesstrax/app/src/views/mod.rs
@@ -14,6 +14,8 @@ General Public License for more details.
You should have received a copy of the GNU General Public License along with FitnessTrax. If not, see .
*/
+use gtk::prelude::*;
+
mod historical_view;
pub use historical_view::HistoricalView;
@@ -30,17 +32,17 @@ pub enum ViewName {
}
pub enum View {
- Placeholder(gtk::Widget),
- Welcome(gtk::Widget),
- Historical(gtk::Widget),
+ Placeholder(PlaceholderView),
+ Welcome(WelcomeView),
+ Historical(HistoricalView),
}
impl View {
- pub fn widget<'a>(&'a self) -> &'a gtk::Widget {
+ pub fn widget(&self) -> gtk::Widget {
match self {
- View::Placeholder(widget) => widget,
- View::Welcome(widget) => widget,
- View::Historical(widget) => widget,
+ View::Placeholder(widget) => widget.clone().upcast::(),
+ View::Welcome(widget) => widget.clone().upcast::(),
+ View::Historical(widget) => widget.clone().upcast::(),
}
}
}