ltk/event_loop/
clipboard.rsuse super::app_data::AppData;
use super::surface::SurfaceFocus;
use crate::app::App;
use crate::tree::find_handlers;
impl<A: App> AppData<A>
{
pub( crate ) fn handle_copy( &mut self, focus: SurfaceFocus )
{
if let Some( text ) = self.focused_selection_text( focus )
{
self.clipboard = text;
self.publish_clipboard_selection();
}
}
pub( crate ) fn handle_cut( &mut self, focus: SurfaceFocus )
{
let idx = match self.surface( focus ).focused_idx { Some( i ) => i, None => return };
if let Some( text ) = self.focused_selection_text( focus )
{
self.clipboard = text;
self.publish_clipboard_selection();
}
if let Some( new_value ) = self.delete_selection( focus )
{
let msg = find_handlers( &self.surface( focus ).widget_rects, idx )
.and_then( |h| h.text_change_msg( &new_value ) );
if let Some( m ) = msg { self.pending_msgs.push( m ); }
}
}
pub( crate ) fn handle_paste( &mut self, focus: SurfaceFocus )
{
if self.clipboard.is_empty() { return; }
let text = self.clipboard.clone();
self.handle_text_insert( focus, &text );
}
}