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