Move PlatformSpecificWindowBuilderAttributes (#3318)

This commit is contained in:
daxpedda 2024-01-17 23:37:28 +01:00 committed by GitHub
parent aec608f93c
commit d7c7ba1d6c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
22 changed files with 145 additions and 156 deletions

View file

@ -14,7 +14,7 @@ use crate::dpi::{LogicalPosition, PhysicalPosition, PhysicalSize};
use crate::error::OsError as RootOE;
use crate::event::{Force, InnerSizeWriter, MouseButton, MouseScrollDelta};
use crate::keyboard::{Key, KeyLocation, ModifiersState, PhysicalKey};
use crate::platform_impl::{OsError, PlatformSpecificWindowBuilderAttributes};
use crate::platform_impl::OsError;
use crate::window::{WindowAttributes, WindowId as RootWindowId};
use super::super::cursor::CursorHandler;
@ -73,10 +73,9 @@ impl Canvas {
id: WindowId,
window: web_sys::Window,
document: Document,
attr: &WindowAttributes,
mut platform_attr: PlatformSpecificWindowBuilderAttributes,
attr: &mut WindowAttributes,
) -> Result<Self, RootOE> {
let canvas = match platform_attr.canvas.take().map(|canvas| {
let canvas = match attr.platform_specific.canvas.take().map(|canvas| {
Arc::try_unwrap(canvas)
.map(|canvas| canvas.into_inner(main_thread))
.unwrap_or_else(|canvas| canvas.get(main_thread).clone())
@ -88,7 +87,7 @@ impl Canvas {
.unchecked_into(),
};
if platform_attr.append && !document.contains(Some(&canvas)) {
if attr.platform_specific.append && !document.contains(Some(&canvas)) {
document
.body()
.expect("Failed to get body from document")
@ -101,7 +100,7 @@ impl Canvas {
// sequential keyboard navigation, but its order is defined by the
// document's source order.
// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex
if platform_attr.focusable {
if attr.platform_specific.focusable {
canvas
.set_attribute("tabindex", "0")
.map_err(|_| os_error!(OsError("Failed to set a tabindex".to_owned())))?;
@ -152,7 +151,7 @@ impl Canvas {
common,
id,
has_focus: Rc::new(Cell::new(false)),
prevent_default: Rc::new(Cell::new(platform_attr.prevent_default)),
prevent_default: Rc::new(Cell::new(attr.platform_specific.prevent_default)),
is_intersecting: None,
on_touch_start: None,
on_blur: None,

View file

@ -30,8 +30,7 @@ pub struct Inner {
impl Window {
pub(crate) fn new(
target: &EventLoopWindowTarget,
attr: WindowAttributes,
platform_attr: PlatformSpecificWindowBuilderAttributes,
mut attr: WindowAttributes,
) -> Result<Self, RootOE> {
let id = target.generate_id();
@ -42,8 +41,7 @@ impl Window {
id,
window.clone(),
document.clone(),
&attr,
platform_attr,
&mut attr,
)?;
let canvas = Rc::new(RefCell::new(canvas));
@ -467,7 +465,7 @@ impl From<u64> for WindowId {
}
}
#[derive(Clone)]
#[derive(Clone, Debug)]
pub struct PlatformSpecificWindowBuilderAttributes {
pub(crate) canvas: Option<Arc<MainThreadSafe<backend::RawCanvasType>>>,
pub(crate) prevent_default: bool,