diff --git a/src/app.rs b/src/app.rs index 80eb31a..e9595fc 100644 --- a/src/app.rs +++ b/src/app.rs @@ -103,6 +103,7 @@ pub enum Message { SetSender(ExtSender), SwitchToPage(Page), EditClipboardHistory(Editable), + ClearClipboardHistory, ChangeFocus(ArrowKey, u32), FileSearchResult(Vec), FileSearchClear, diff --git a/src/app/pages/clipboard.rs b/src/app/pages/clipboard.rs index 742ffa0..b99f548 100644 --- a/src/app/pages/clipboard.rs +++ b/src/app/pages/clipboard.rs @@ -48,6 +48,7 @@ pub fn clipboard_view( .align_y(Alignment::Center) .into(); } + let viewport_content: Element<'static, Message> = match clipboard_content.get(focussed_id as usize) { Some(content) => viewport_content(content, &theme), @@ -129,14 +130,23 @@ fn viewport_content(content: &ClipBoardContentType, theme: &Theme) -> Element<'s }; let theme_clone = theme.clone(); + let theme_clone_2 = theme.clone(); Column::from_iter([ viewer, container( - Button::new("Delete") - .on_press(Message::EditClipboardHistory(Editable::Delete( - content.to_owned(), - ))) - .style(move |_, _| delete_button_style(&theme_clone)), + Row::from_iter([ + Button::new("Delete") + .on_press(Message::EditClipboardHistory(Editable::Delete( + content.to_owned(), + ))) + .style(move |_, _| delete_button_style(&theme_clone)) + .into(), + Button::new("Clear") + .on_press(Message::ClearClipboardHistory) + .style(move |_, _| delete_button_style(&theme_clone_2)) + .into(), + ]) + .spacing(10), ) .width(Length::Fill) .align_x(Alignment::Center) diff --git a/src/app/tile/update.rs b/src/app/tile/update.rs index f6e2177..a7549cf 100644 --- a/src/app/tile/update.rs +++ b/src/app/tile/update.rs @@ -628,6 +628,11 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task { ]) } + Message::ClearClipboardHistory => { + tile.clipboard_content.clear(); + Task::none() + } + Message::DebouncedSearch(id) => { // Only execute if this is still the most recent debounce timer if !tile.debouncer.is_ready() {