core: Use Cow<str> for FullscreenError in UI backend, as it can't ever be anything else
This commit is contained in:
parent
1c7bfd8c5f
commit
b7dcd26c38
|
@ -1,7 +1,8 @@
|
|||
use crate::events::{KeyCode, PlayerEvent};
|
||||
use std::borrow::Cow;
|
||||
use std::collections::HashSet;
|
||||
|
||||
pub type Error = Box<dyn std::error::Error>;
|
||||
pub type FullscreenError = Cow<'static, str>;
|
||||
|
||||
pub trait UiBackend {
|
||||
fn mouse_visible(&self) -> bool;
|
||||
|
@ -14,7 +15,7 @@ pub trait UiBackend {
|
|||
/// Sets the clipboard to the given content.
|
||||
fn set_clipboard_content(&mut self, content: String);
|
||||
|
||||
fn set_fullscreen(&mut self, is_full: bool) -> Result<(), Error>;
|
||||
fn set_fullscreen(&mut self, is_full: bool) -> Result<(), FullscreenError>;
|
||||
|
||||
/// Displays a warning about unsupported content in Ruffle.
|
||||
/// The user can still click an "OK" or "run anyway" message to dismiss the warning.
|
||||
|
@ -138,7 +139,7 @@ impl UiBackend for NullUiBackend {
|
|||
|
||||
fn set_clipboard_content(&mut self, _content: String) {}
|
||||
|
||||
fn set_fullscreen(&mut self, _is_full: bool) -> Result<(), Error> {
|
||||
fn set_fullscreen(&mut self, _is_full: bool) -> Result<(), FullscreenError> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use clipboard::{ClipboardContext, ClipboardProvider};
|
||||
use rfd::{MessageButtons, MessageDialog, MessageLevel};
|
||||
use ruffle_core::backend::ui::{Error, MouseCursor, UiBackend};
|
||||
use ruffle_core::backend::ui::{FullscreenError, MouseCursor, UiBackend};
|
||||
use std::rc::Rc;
|
||||
use winit::window::{Fullscreen, Window};
|
||||
|
||||
|
@ -55,7 +55,7 @@ impl UiBackend for DesktopUiBackend {
|
|||
self.clipboard.set_contents(content).unwrap();
|
||||
}
|
||||
|
||||
fn set_fullscreen(&mut self, is_full: bool) -> Result<(), Error> {
|
||||
fn set_fullscreen(&mut self, is_full: bool) -> Result<(), FullscreenError> {
|
||||
self.window.set_fullscreen(if is_full {
|
||||
Some(Fullscreen::Borderless(None))
|
||||
} else {
|
||||
|
|
|
@ -1,25 +1,9 @@
|
|||
use super::JavascriptPlayer;
|
||||
use ruffle_core::backend::ui::{Error, MouseCursor, UiBackend};
|
||||
use ruffle_core::backend::ui::{FullscreenError, MouseCursor, UiBackend};
|
||||
use ruffle_web_common::JsResult;
|
||||
use std::borrow::Cow;
|
||||
use web_sys::HtmlCanvasElement;
|
||||
|
||||
#[derive(Debug)]
|
||||
struct FullScreenError {
|
||||
jsval: String,
|
||||
}
|
||||
|
||||
impl std::fmt::Display for FullScreenError {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
f.write_str(&self.jsval)
|
||||
}
|
||||
}
|
||||
|
||||
impl std::error::Error for FullScreenError {
|
||||
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
/// An implementation of `UiBackend` utilizing `web_sys` bindings to input APIs.
|
||||
pub struct WebUiBackend {
|
||||
js_player: JavascriptPlayer,
|
||||
|
@ -75,14 +59,13 @@ impl UiBackend for WebUiBackend {
|
|||
log::warn!("set clipboard not implemented");
|
||||
}
|
||||
|
||||
fn set_fullscreen(&mut self, is_full: bool) -> Result<(), Error> {
|
||||
fn set_fullscreen(&mut self, is_full: bool) -> Result<(), FullscreenError> {
|
||||
match self.js_player.set_fullscreen(is_full) {
|
||||
Ok(_) => Ok(()),
|
||||
Err(jsval) => Err(Box::new(FullScreenError {
|
||||
jsval: jsval
|
||||
.as_string()
|
||||
.unwrap_or_else(|| "Failed to change full screen state".to_string()),
|
||||
})),
|
||||
Err(jsval) => Err(jsval
|
||||
.as_string()
|
||||
.map(Cow::Owned)
|
||||
.unwrap_or_else(|| Cow::Borrowed("Failed to change full screen state"))),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue