client.rs

 1use std::cell::RefCell;
 2use std::rc::Rc;
 3
 4use copypasta::ClipboardProvider;
 5
 6use crate::platform::PlatformWindow;
 7use crate::{AnyWindowHandle, CursorStyle, DisplayId, PlatformDisplay, WindowParams};
 8
 9pub trait Client {
10    fn displays(&self) -> Vec<Rc<dyn PlatformDisplay>>;
11    fn primary_display(&self) -> Option<Rc<dyn PlatformDisplay>>;
12    fn display(&self, id: DisplayId) -> Option<Rc<dyn PlatformDisplay>>;
13    fn open_window(
14        &self,
15        handle: AnyWindowHandle,
16        options: WindowParams,
17    ) -> Box<dyn PlatformWindow>;
18    fn set_cursor_style(&self, style: CursorStyle);
19    fn get_clipboard(&self) -> Rc<RefCell<dyn ClipboardProvider>>;
20    fn get_primary(&self) -> Rc<RefCell<dyn ClipboardProvider>>;
21}