Merge branch 'more-clone' into 'master'
Use clone! macro in more cases See merge request World/podcasts!141
This commit is contained in:
commit
6cb7de7fb3
@ -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() {
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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(())
|
||||
|
||||
Loading…
Reference in New Issue
Block a user