diff --git a/hammond-gtk/resources/gtk/episodes_view.ui b/hammond-gtk/resources/gtk/episodes_view.ui index 639cec7..a606233 100644 --- a/hammond-gtk/resources/gtk/episodes_view.ui +++ b/hammond-gtk/resources/gtk/episodes_view.ui @@ -3,11 +3,13 @@ + container True False vertical - + + scrolled_window True True in diff --git a/hammond-gtk/src/app.rs b/hammond-gtk/src/app.rs index d760020..8db8445 100644 --- a/hammond-gtk/src/app.rs +++ b/hammond-gtk/src/app.rs @@ -134,12 +134,8 @@ impl App { utils::refresh_feed(headerbar.clone(), Some(vec![s]), sender.clone()) } } - Ok(Action::RefreshViews) => { - content.update(); - } - Ok(Action::RefreshEpisodesViewBGR) => { - content.update_episode_view_if_baground(); - } + Ok(Action::RefreshViews) => content.update(), + Ok(Action::RefreshEpisodesViewBGR) => content.update_episode_view_if_baground(), Ok(Action::HeaderBarShowTile(title)) => headerbar.switch_to_back(&title), Ok(Action::HeaderBarNormal) => headerbar.switch_to_normal(), Ok(Action::HeaderBarHideUpdateIndicator) => headerbar.hide_update_notification(), diff --git a/hammond-gtk/src/content.rs b/hammond-gtk/src/content.rs index ef0a37e..3108ccb 100644 --- a/hammond-gtk/src/content.rs +++ b/hammond-gtk/src/content.rs @@ -193,8 +193,27 @@ impl EpisodeStack { } pub fn update(&self) { - let old = self.stack.get_child_by_name("episodes").unwrap(); + use gtk::Cast; + + let old = self.stack + .get_child_by_name("episodes") + .unwrap() + .downcast::() + .unwrap(); + info!("Name: {:?}", WidgetExt::get_name(&old)); + + let scrolled_window = old.get_children() + .first() + .unwrap() + .clone() + .downcast::() + .unwrap(); + info!("Name: {:?}", WidgetExt::get_name(&scrolled_window)); + let eps = EpisodesView::new(self.sender.clone()); + scrolled_window + .get_vadjustment() + .map(|x| eps.set_vadjustment(&x)); self.stack.remove(&old); self.stack.add_named(&eps.container, "episodes"); diff --git a/hammond-gtk/src/views/episodes.rs b/hammond-gtk/src/views/episodes.rs index 5fb69f6..bf65497 100644 --- a/hammond-gtk/src/views/episodes.rs +++ b/hammond-gtk/src/views/episodes.rs @@ -24,6 +24,7 @@ enum ListSplit { #[derive(Debug, Clone)] pub struct EpisodesView { pub container: gtk::Box, + scrolled_window: gtk::ScrolledWindow, frame_parent: gtk::Box, today_box: gtk::Box, yday_box: gtk::Box, @@ -41,6 +42,7 @@ impl Default for EpisodesView { fn default() -> Self { let builder = gtk::Builder::new_from_resource("/org/gnome/hammond/gtk/episodes_view.ui"); let container: gtk::Box = builder.get_object("container").unwrap(); + let scrolled_window: gtk::ScrolledWindow = builder.get_object("scrolled_window").unwrap(); let frame_parent: gtk::Box = builder.get_object("frame_parent").unwrap(); let today_box: gtk::Box = builder.get_object("today_box").unwrap(); let yday_box: gtk::Box = builder.get_object("yday_box").unwrap(); @@ -55,6 +57,7 @@ impl Default for EpisodesView { EpisodesView { container, + scrolled_window, frame_parent, today_box, yday_box, @@ -147,6 +150,10 @@ impl EpisodesView { true } + + pub fn set_vadjustment(&self, vadjustment: >k::Adjustment) { + self.scrolled_window.set_vadjustment(vadjustment) + } } fn split(now: &DateTime, epoch: i64) -> ListSplit {