Skip to content

Commit

Permalink
Update objc2 related crates
Browse files Browse the repository at this point in the history
  • Loading branch information
DataTriny committed Jan 26, 2025
1 parent 46ed99b commit d692283
Show file tree
Hide file tree
Showing 8 changed files with 211 additions and 180 deletions.
102 changes: 72 additions & 30 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 4 additions & 3 deletions platforms/macos/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,15 @@ default-target = "x86_64-apple-darwin"
accesskit = { version = "0.17.1", path = "../../common" }
accesskit_consumer = { version = "0.26.0", path = "../../consumer" }
hashbrown = { version = "0.15", default-features = false, features = ["default-hasher"] }
objc2 = "0.5.1"
objc2-foundation = { version = "0.2.0", features = [
objc2 = { version = "0.6", default-features = false }
objc2-foundation = { version = "0.3", default-features = false, features = [
"NSArray",
"NSDictionary",
"NSValue",
"NSThread",
] }
objc2-app-kit = { version = "0.2.0", features = [
objc2-app-kit = { version = "0.3", default-features = false, features = [
"objc2-core-foundation",
"NSAccessibility",
"NSAccessibilityConstants",
"NSAccessibilityElement",
Expand Down
34 changes: 18 additions & 16 deletions platforms/macos/src/adapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use accesskit::{
Tree as TreeData, TreeUpdate,
};
use accesskit_consumer::{FilterResult, Tree};
use objc2::rc::{Id, WeakId};
use objc2::rc::{Retained, Weak};
use objc2_app_kit::NSView;
use objc2_foundation::{MainThreadMarker, NSArray, NSObject, NSPoint};
use std::{ffi::c_void, ptr::null_mut, rc::Rc};
Expand All @@ -25,7 +25,7 @@ const PLACEHOLDER_ROOT_ID: NodeId = NodeId(0);

enum State {
Inactive {
view: WeakId<NSView>,
view: Weak<NSView>,
is_view_focused: bool,
action_handler: Rc<dyn ActionHandlerNoMut>,
mtm: MainThreadMarker,
Expand Down Expand Up @@ -62,8 +62,8 @@ impl Adapter {
is_view_focused: bool,
action_handler: impl 'static + ActionHandler,
) -> Self {
let view = unsafe { Id::retain(view as *mut NSView) }.unwrap();
let view = WeakId::from_id(&view);
let view = unsafe { Retained::retain(view as *mut NSView) }.unwrap();
let view = Weak::from_retained(&view);
let mtm = MainThreadMarker::new().unwrap();
let state = State::Inactive {
view,
Expand Down Expand Up @@ -202,20 +202,22 @@ impl Adapter {
let state = tree.state();
let node = state.root();
let platform_nodes = if filter(&node) == FilterResult::Include {
vec![Id::into_super(Id::into_super(
context.get_or_create_platform_node(node.id()),
))]
vec![context
.get_or_create_platform_node(node.id())
.into_super()
.into_super()]
} else {
node.filtered_children(filter)
.map(|node| {
Id::into_super(Id::into_super(
context.get_or_create_platform_node(node.id()),
))
context
.get_or_create_platform_node(node.id())
.into_super()
.into_super()
})
.collect::<Vec<Id<NSObject>>>()
.collect::<Vec<Retained<NSObject>>>()
};
let array = NSArray::from_vec(platform_nodes);
Id::autorelease_return(array)
let array = NSArray::from_retained_slice(&platform_nodes);
Retained::autorelease_return(array)
}

pub fn focus<H: ActivationHandler + ?Sized>(
Expand All @@ -227,14 +229,14 @@ impl Adapter {
let state = tree.state();
if let Some(node) = state.focus() {
if can_be_focused(&node) {
return Id::autorelease_return(context.get_or_create_platform_node(node.id()))
return Retained::autorelease_return(context.get_or_create_platform_node(node.id()))
as *mut _;
}
}
null_mut()
}

fn weak_view(&self) -> &WeakId<NSView> {
fn weak_view(&self) -> &Weak<NSView> {
match &self.state {
State::Inactive { view, .. } => view,
State::Placeholder {
Expand Down Expand Up @@ -263,6 +265,6 @@ impl Adapter {
let root = state.root();
let point = from_ns_point(&view, &root, point);
let node = root.node_at_point(point, &filter).unwrap_or(root);
Id::autorelease_return(context.get_or_create_platform_node(node.id())) as *mut _
Retained::autorelease_return(context.get_or_create_platform_node(node.id())) as *mut _
}
}
Loading

0 comments on commit d692283

Please sign in to comment.