Skip to main content

ferroui_base/input/platform/
platform_clipboard_manager.rs

1use super::{ClipboardType, IClipboard, IPlatformClipboardManagerImpl};
2use std::rc::Rc;
3
4/// A clipboard manager holding the clipboards it was created with.
5pub struct PlatformClipboardManager {
6    clipboard: Option<Rc<dyn IClipboard>>,
7    primary_selection: Option<Rc<dyn IClipboard>>,
8}
9
10impl PlatformClipboardManager {
11    /// Creates the manager from the default clipboard and the primary
12    /// selection clipboard of the platform.
13    pub fn new(clipboard: Option<Rc<dyn IClipboard>>, primary_selection: Option<Rc<dyn IClipboard>>) -> Self {
14        Self { clipboard, primary_selection }
15    }
16}
17
18impl IPlatformClipboardManagerImpl for PlatformClipboardManager {
19    fn try_get_clipboard(&self, type_: ClipboardType) -> Option<Rc<dyn IClipboard>> {
20        match type_ {
21            ClipboardType::Default => self.clipboard.clone(),
22            ClipboardType::PrimarySelection => self.primary_selection.clone(),
23        }
24    }
25}