@@ -5,6 +5,7 @@ use crate::{
55 actionbar:: NoteAction ,
66 ui:: { note:: NoteOptions , timeline:: TimelineTabView } ,
77} ;
8+ use egui_winit:: clipboard:: Clipboard ;
89use nostrdb:: { Filter , Transaction } ;
910use notedeck:: { MuteFun , NoteRef } ;
1011use std:: time:: { Duration , Instant } ;
@@ -39,14 +40,18 @@ impl<'a, 'd> SearchView<'a, 'd> {
3940 }
4041 }
4142
42- pub fn show ( & mut self , ui : & mut egui:: Ui ) -> Option < NoteAction > {
43- padding ( 8.0 , ui, |ui| self . show_impl ( ui) ) . inner
43+ pub fn show ( & mut self , ui : & mut egui:: Ui , clipboard : & mut Clipboard ) -> Option < NoteAction > {
44+ padding ( 8.0 , ui, |ui| self . show_impl ( ui, clipboard ) ) . inner
4445 }
4546
46- pub fn show_impl ( & mut self , ui : & mut egui:: Ui ) -> Option < NoteAction > {
47+ pub fn show_impl (
48+ & mut self ,
49+ ui : & mut egui:: Ui ,
50+ clipboard : & mut Clipboard ,
51+ ) -> Option < NoteAction > {
4752 ui. spacing_mut ( ) . item_spacing = egui:: vec2 ( 0.0 , 12.0 ) ;
4853
49- if search_box ( self . query , ui) {
54+ if search_box ( self . query , ui, clipboard ) {
5055 self . execute_search ( ui. ctx ( ) ) ;
5156 }
5257
@@ -132,7 +137,7 @@ impl<'a, 'd> SearchView<'a, 'd> {
132137 }
133138}
134139
135- fn search_box ( query : & mut SearchQueryState , ui : & mut egui:: Ui ) -> bool {
140+ fn search_box ( query : & mut SearchQueryState , ui : & mut egui:: Ui , clipboard : & mut Clipboard ) -> bool {
136141 ui. horizontal ( |ui| {
137142 // Container for search input and icon
138143 let search_container = egui:: Frame {
@@ -168,6 +173,22 @@ fn search_box(query: &mut SearchQueryState, ui: &mut egui::Ui) -> bool {
168173 . frame ( false ) ,
169174 ) ;
170175
176+ response. context_menu ( |ui| {
177+ if ui. button ( "paste" ) . clicked ( ) {
178+ if let Some ( text) = clipboard. get ( ) {
179+ query. string . clear ( ) ;
180+ query. string . push_str ( & text) ;
181+ }
182+ }
183+ } ) ;
184+
185+ if response. middle_clicked ( ) {
186+ if let Some ( text) = clipboard. get ( ) {
187+ query. string . clear ( ) ;
188+ query. string . push_str ( & text) ;
189+ }
190+ }
191+
171192 if query. focus_state == FocusState :: ShouldRequestFocus {
172193 response. request_focus ( ) ;
173194 query. focus_state = FocusState :: RequestedFocus ;
0 commit comments