Use clone! macro in more cases

This commit is contained in:
Julian Hofer 2020-03-22 18:54:58 +01:00 committed by Jordan Petridis
parent 6edeb59b16
commit cb0860cddf
No known key found for this signature in database
GPG Key ID: E8523968931763BE
3 changed files with 21 additions and 29 deletions

View File

@ -18,6 +18,7 @@
// SPDX-License-Identifier: GPL-3.0-or-later
use glib;
use glib::clone;
use gtk;
use gtk::prelude::*;
@ -82,21 +83,17 @@ impl InAppNotification {
let notif = InAppNotification::default();
notif.text.set_text(&text);
let revealer_weak = notif.revealer.downgrade();
let mut time = 0;
let id = timeout_add(250, move || {
if time < timer {
time += 250;
return glib::Continue(true);
};
let revealer = match revealer_weak.upgrade() {
Some(r) => r,
None => return glib::Continue(false),
};
callback(revealer)
});
let id = timeout_add(
250,
clone!(@weak notif.revealer as revealer => @default-return glib::Continue(false), move || {
if time < timer {
time += 250;
return glib::Continue(true);
};
callback(revealer)
}),
);
let id = Rc::new(RefCell::new(Some(id)));
if undo_callback.is_some() {

View File

@ -22,6 +22,8 @@ use failure::Error;
use gtk::{self, prelude::*, Adjustment};
use glib::clone;
use crossbeam_channel::Sender;
use libhandy::{Column, ColumnExt};
use podcasts_data::dbqueries;
@ -135,17 +137,11 @@ impl HomeView {
}
};
let home_weak = Rc::downgrade(&home);
let callback = move || {
let home = match home_weak.upgrade() {
Some(h) => h,
None => return,
};
let callback = clone!(@weak home => move || {
if let Some(ref v) = vadj {
home.view.set_adjustments(None, Some(v))
};
};
});
lazy_load_full(episodes, func, callback);
home.view.container().show_all();

View File

@ -17,6 +17,7 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
use glib::clone;
use gtk::{self, prelude::*, Adjustment, Align, SelectionMode};
use crossbeam_channel::Sender;
@ -83,16 +84,14 @@ impl ShowsView {
fn populate_flowbox(shows: &Rc<ShowsView>, vadj: Option<Adjustment>) -> Result<(), Error> {
let ignore = get_ignored_shows()?;
let podcasts = dbqueries::get_podcasts_filter(&ignore)?;
let show_weak = Rc::downgrade(&shows);
let flowbox_weak = shows.flowbox.downgrade();
let constructor = move |parent| ShowsChild::new(&parent).child;
let callback = move || {
match (show_weak.upgrade(), &vadj) {
(Some(ref shows), Some(ref v)) => shows.view.set_adjustments(None, Some(v)),
_ => (),
};
};
let callback = clone!(@weak shows => move || {
if vadj.is_some() {
shows.view.set_adjustments(None, vadj.as_ref())
}
});
lazy_load(podcasts, flowbox_weak, constructor, callback);
Ok(())