diff --git a/src/xstate/selection.rs b/src/xstate/selection.rs index f2cdbee..39b1f33 100644 --- a/src/xstate/selection.rs +++ b/src/xstate/selection.rs @@ -267,6 +267,7 @@ trait SelectionDataImpl { server_state: &mut RealServerState, ) -> bool; fn atom(&self) -> x::Atom; + fn selection_clear(&mut self); } impl SelectionData { @@ -325,6 +326,10 @@ impl SelectionDataImpl for SelectionData { } } + fn selection_clear(&mut self) { + self.current_selection = None; + } + fn handle_new_owner( &mut self, connection: &xcb::Connection, @@ -722,13 +727,7 @@ impl XState { match event { xcb::Event::X(x::Event::SelectionClear(e)) => { let data = get_selection_data!(e.selection()); - data.handle_new_owner( - &self.connection, - self.wm_window, - &self.atoms, - e.owner(), - e.time(), - ); + data.selection_clear(); } xcb::Event::X(x::Event::SelectionNotify(e)) => { if e.property() == x::ATOM_NONE {