muxr_client/pane/
focus.rs1use muxr_core::ClientMouseEvent;
2use muxr_core::ClientMouseEventPhase;
3use muxr_core::ClientMousePosition;
4
5#[derive(Clone, Copy, Debug, Eq, PartialEq)]
6pub enum LocalMouseAction {
7 FocusAndSelectionStart(ClientMousePosition),
8 SelectionEnd(ClientMousePosition),
9 SelectionUpdate(ClientMousePosition),
10}
11
12impl LocalMouseAction {
13 pub fn from_event(event: ClientMouseEvent) -> Option<Self> {
14 let position = event.position;
15 if event.phase == ClientMouseEventPhase::Release {
16 return Some(Self::SelectionEnd(position));
17 }
18 if event.button & (64 | 0b11) != 0 {
19 return None;
20 }
21 if event.button & 32 != 0 {
22 return Some(Self::SelectionUpdate(position));
23 }
24 Some(Self::FocusAndSelectionStart(position))
25 }
26}