parent
f1f8ba9a88
commit
0e44037239
2 changed files with 22 additions and 9 deletions
|
|
@ -81,6 +81,10 @@ mod imp {
|
|||
|
||||
pub drag_source: gtk::DragSource,
|
||||
|
||||
/// File where trash operation has been undone
|
||||
#[property(get, set, nullable)]
|
||||
trash_restore: RefCell<Option<gio::File>>,
|
||||
|
||||
pub(super) model: RefCell<LpFileModel>,
|
||||
pub(super) preserve_content: Cell<bool>,
|
||||
|
||||
|
|
@ -522,6 +526,16 @@ impl LpImageView {
|
|||
|
||||
/// Handle files are added or removed from directory
|
||||
fn model_content_changed_cb(&self) {
|
||||
// Animate to image that was restored from trash
|
||||
if let Some(trash_restore) = self.trash_restore() {
|
||||
if self.model().contains(&trash_restore) {
|
||||
self.set_trash_restore(gio::File::NONE);
|
||||
self.update_sliding_view(&trash_restore);
|
||||
self.scroll_sliding_view(&trash_restore);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
let Some(current_file) = self.current_file() else {
|
||||
return;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -667,16 +667,15 @@ impl LpWindow {
|
|||
toast.connect_button_clicked(glib::clone!(@weak self as win => move |_| {
|
||||
let path = path.clone();
|
||||
glib::spawn_future_local(async move {
|
||||
win.image_view()
|
||||
.set_trash_restore(Some(gio::File::for_path(&path)));
|
||||
let result = crate::util::untrash(&path).await;
|
||||
match result {
|
||||
Ok(()) => win.image_view().set_images_from_files(Vec::from([gio::File::for_path(&path)])),
|
||||
Err(err) => {
|
||||
log::error!("Failed to untrash {path:?}: {err}");
|
||||
win.show_toast(
|
||||
gettext("Failed to restore image from trash"),
|
||||
adw::ToastPriority::High,
|
||||
);
|
||||
}
|
||||
if let Err(err) = result {
|
||||
log::error!("Failed to untrash {path:?}: {err}");
|
||||
win.show_toast(
|
||||
gettext("Failed to restore image from trash"),
|
||||
adw::ToastPriority::High,
|
||||
);
|
||||
}
|
||||
});
|
||||
}));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue