fix: stubs for various platforms

This commit is contained in:
Ashley Wulber 2024-06-19 12:37:26 -04:00 committed by Ashley Wulber
parent a5be704055
commit 7c59b07b91
3 changed files with 130 additions and 6 deletions

View file

@ -1,12 +1,15 @@
use crate::ClipboardProvider;
use crate::dnd::DndProvider;
use dnd::{DndAction, DndDestinationRectangle, DndSurface, Icon};
use mime::{AllowedMimeTypes, AsMimeTypes};
use raw_window_handle::HasDisplayHandle;
use std::error::Error;
use std::{borrow::Cow, error::Error};
pub fn connect<W: HasDisplayHandle>(
_window: &W,
) -> Result<Clipboard, Box<dyn Error>> {
Ok(Clipboard::new())
Clipboard::new()
}
pub struct Clipboard;
@ -36,7 +39,46 @@ impl ClipboardProvider for Clipboard {
Err(Box::new(AndroidClipboardError::Unimplemented))
}
fn write(&mut self, contents: String) -> Result<(), Box<dyn Error>> {
fn write(&mut self, _contents: String) -> Result<(), Box<dyn Error>> {
Err(Box::new(AndroidClipboardError::Unimplemented))
}
}
impl DndProvider for Clipboard {
fn init_dnd(
&self,
_tx: Box<dyn dnd::Sender<DndSurface> + Send + Sync + 'static>,
) {
}
fn start_dnd<D: AsMimeTypes + Send + 'static>(
&self,
_internal: bool,
_source_surface: DndSurface,
_icon_surface: Option<Icon>,
_content: D,
_actions: DndAction,
) {
}
fn end_dnd(&self) {}
fn register_dnd_destination(
&self,
_surface: DndSurface,
_rectangles: Vec<DndDestinationRectangle>,
) {
}
fn set_action(&self, _action: DndAction) {}
fn peek_offer<D: AllowedMimeTypes + 'static>(
&self,
_mime_type: Option<Cow<'static, str>>,
) -> std::io::Result<D> {
Err(std::io::Error::new(
std::io::ErrorKind::Other,
"DnD not supported",
))
}
}

View file

@ -1,8 +1,11 @@
use crate::ClipboardProvider;
use crate::dnd::DndProvider;
pub(crate) use clipboard_macos::Clipboard;
use dnd::{DndAction, DndDestinationRectangle, DndSurface, Icon};
use mime::{AllowedMimeTypes, AsMimeTypes};
use raw_window_handle::HasDisplayHandle;
use std::error::Error;
use std::{borrow::Cow, error::Error};
pub fn connect<W: HasDisplayHandle>(
_window: &W,
@ -10,6 +13,45 @@ pub fn connect<W: HasDisplayHandle>(
Clipboard::new()
}
impl DndProvider for Clipboard {
fn init_dnd(
&self,
_tx: Box<dyn dnd::Sender<DndSurface> + Send + Sync + 'static>,
) {
}
fn start_dnd<D: AsMimeTypes + Send + 'static>(
&self,
_internal: bool,
_source_surface: DndSurface,
_icon_surface: Option<Icon>,
_content: D,
_actions: DndAction,
) {
}
fn end_dnd(&self) {}
fn register_dnd_destination(
&self,
_surface: DndSurface,
_rectangles: Vec<DndDestinationRectangle>,
) {
}
fn set_action(&self, _action: DndAction) {}
fn peek_offer<D: AllowedMimeTypes + 'static>(
&self,
_mime_type: Option<Cow<'static, str>>,
) -> std::io::Result<D> {
Err(std::io::Error::new(
std::io::ErrorKind::Other,
"DnD not supported",
))
}
}
impl ClipboardProvider for Clipboard {
fn read(&self) -> Result<String, Box<dyn Error>> {
self.read()

View file

@ -1,15 +1,55 @@
use crate::ClipboardProvider;
use crate::dnd::DndProvider;
use clipboard_win::{get_clipboard_string, set_clipboard_string};
use dnd::{DndAction, DndDestinationRectangle, DndSurface, Icon};
use mime::{AllowedMimeTypes, AsMimeTypes};
use raw_window_handle::HasDisplayHandle;
use std::error::Error;
use std::{borrow::Cow, error::Error};
pub fn connect<W: HasDisplayHandle>(
_window: &W,
) -> Result<Clipboard, Box<dyn Error>> {
Ok(Clipboard)
}
impl DndProvider for Clipboard {
fn init_dnd(
&self,
_tx: Box<dyn dnd::Sender<DndSurface> + Send + Sync + 'static>,
) {
}
fn start_dnd<D: AsMimeTypes + Send + 'static>(
&self,
_internal: bool,
_source_surface: DndSurface,
_icon_surface: Option<Icon>,
_content: D,
_actions: DndAction,
) {
}
fn end_dnd(&self) {}
fn register_dnd_destination(
&self,
_surface: DndSurface,
_rectangles: Vec<DndDestinationRectangle>,
) {
}
fn set_action(&self, _action: DndAction) {}
fn peek_offer<D: AllowedMimeTypes + 'static>(
&self,
_mime_type: Option<Cow<'static, str>>,
) -> std::io::Result<D> {
Err(std::io::Error::new(
std::io::ErrorKind::Other,
"DnD not supported",
))
}
}
pub struct Clipboard;