From 50ac0299a608ad310a093c1f0bf35d0767ceecf1 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Tue, 23 Apr 2024 16:07:34 +0200 Subject: [PATCH] Use new objc2 crates --- Cargo.lock | 71 ++++++++++++++++++++++----------- platforms/macos/Cargo.toml | 31 +++++++------- platforms/macos/src/adapter.rs | 6 +-- platforms/macos/src/context.rs | 3 +- platforms/macos/src/event.rs | 12 +++--- platforms/macos/src/lib.rs | 2 +- platforms/macos/src/node.rs | 12 +++--- platforms/macos/src/patch.rs | 2 +- platforms/macos/src/subclass.rs | 6 +-- platforms/macos/src/util.rs | 16 ++++---- 10 files changed, 88 insertions(+), 73 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5a1d2d84a..27a22d218 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -64,8 +64,9 @@ version = "0.12.0" dependencies = [ "accesskit", "accesskit_consumer", - "icrate 0.1.0", - "objc2 0.5.0", + "objc2 0.5.1", + "objc2-app-kit", + "objc2-foundation", "once_cell", ] @@ -460,12 +461,11 @@ dependencies = [ [[package]] name = "block2" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e58aa60e59d8dbfcc36138f5f18be5f24394d33b38b24f7fd0b1caa33095f22f" +checksum = "43ff7d91d3c1d568065b06c899777d1e48dcf76103a672a0adbc238a7f247f1e" dependencies = [ - "block-sys", - "objc2 0.5.0", + "objc2 0.5.1", ] [[package]] @@ -982,16 +982,6 @@ dependencies = [ "objc2 0.4.1", ] -[[package]] -name = "icrate" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e286f4b975ac6c054971a0600a9b76438b332edace54bff79c71c9d3adfc9772" -dependencies = [ - "block2 0.4.0", - "objc2 0.5.0", -] - [[package]] name = "indexmap" version = "1.9.2" @@ -1269,9 +1259,9 @@ dependencies = [ [[package]] name = "objc-sys" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c71324e4180d0899963fc83d9d241ac39e699609fc1025a850aadac8257459" +checksum = "da284c198fb9b7b0603f8635185e85fbd5b64ee154b1ed406d489077de2d6d60" [[package]] name = "objc2" @@ -1285,12 +1275,35 @@ dependencies = [ [[package]] name = "objc2" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9c7f0d511a4ce26b078183179dca908171cfc69f88986fe36c5138e1834476" +checksum = "b4b25e1034d0e636cd84707ccdaa9f81243d399196b8a773946dcffec0401659" dependencies = [ "objc-sys", - "objc2-encode 4.0.0", + "objc2-encode 4.0.1", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb79768a710a9a1798848179edb186d1af7e8a8679f369e4b8d201dd2a034047" +dependencies = [ + "block2 0.5.0", + "objc2 0.5.1", + "objc2-core-data", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e092bc42eaf30a08844e6a076938c60751225ec81431ab89f5d1ccd9f958d6c" +dependencies = [ + "block2 0.5.0", + "objc2 0.5.1", + "objc2-foundation", ] [[package]] @@ -1301,9 +1314,19 @@ checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" [[package]] name = "objc2-encode" -version = "4.0.0" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88658da63e4cc2c8adb1262902cd6af51094df0488b760d6fd27194269c0950a" + +[[package]] +name = "objc2-foundation" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ff06a6505cde0766484f38d8479ac8e6d31c66fbc2d5492f65ca8c091456379" +checksum = "cfaefe14254871ea16c7d88968c0ff14ba554712a20d76421eec52f0a7fb8904" +dependencies = [ + "block2 0.5.0", + "objc2 0.5.1", +] [[package]] name = "object" @@ -2648,7 +2671,7 @@ dependencies = [ "core-foundation", "core-graphics", "cursor-icon", - "icrate 0.0.4", + "icrate", "js-sys", "libc", "log", diff --git a/platforms/macos/Cargo.toml b/platforms/macos/Cargo.toml index e117ab03d..ea9c5b02b 100644 --- a/platforms/macos/Cargo.toml +++ b/platforms/macos/Cargo.toml @@ -17,19 +17,20 @@ default-target = "x86_64-apple-darwin" [dependencies] accesskit = { version = "0.13.0", path = "../../common" } accesskit_consumer = { version = "0.18.0", path = "../../consumer" } -objc2 = "0.5.0" once_cell = "1.13.0" - -[dependencies.icrate] -version = "0.1.0" -features = [ - "AppKit", - "AppKit_NSAccessibilityElement", - "AppKit_NSView", - "AppKit_NSWindow", - "Foundation", - "Foundation_NSArray", - "Foundation_NSMutableDictionary", - "Foundation_NSNumber", - "Foundation_NSThread", -] +objc2 = "0.5.1" +objc2-foundation = { version = "0.2.0", features = [ + "NSArray", + "NSDictionary", + "NSValue", + "NSThread", +] } +objc2-app-kit = { version = "0.2.0", features = [ + "NSAccessibility", + "NSAccessibilityConstants", + "NSAccessibilityElement", + "NSAccessibilityProtocols", + "NSResponder", + "NSView", + "NSWindow", +] } diff --git a/platforms/macos/src/adapter.rs b/platforms/macos/src/adapter.rs index 7a4792d69..be669f525 100644 --- a/platforms/macos/src/adapter.rs +++ b/platforms/macos/src/adapter.rs @@ -8,11 +8,9 @@ use accesskit::{ TreeUpdate, }; use accesskit_consumer::{FilterResult, Tree}; -use icrate::{ - AppKit::NSView, - Foundation::{MainThreadMarker, NSArray, NSObject, NSPoint}, -}; use objc2::rc::{Id, WeakId}; +use objc2_app_kit::NSView; +use objc2_foundation::{MainThreadMarker, NSArray, NSObject, NSPoint}; use std::{ffi::c_void, ptr::null_mut, rc::Rc}; use crate::{ diff --git a/platforms/macos/src/context.rs b/platforms/macos/src/context.rs index 45f6a0c38..a480c359a 100644 --- a/platforms/macos/src/context.rs +++ b/platforms/macos/src/context.rs @@ -5,8 +5,9 @@ use accesskit::{ActionHandler, ActionRequest, NodeId}; use accesskit_consumer::Tree; -use icrate::{AppKit::*, Foundation::MainThreadMarker}; use objc2::rc::{Id, WeakId}; +use objc2_app_kit::*; +use objc2_foundation::MainThreadMarker; use std::{cell::RefCell, collections::HashMap, rc::Rc}; use crate::node::PlatformNode; diff --git a/platforms/macos/src/event.rs b/platforms/macos/src/event.rs index 1bde42056..218ca2661 100644 --- a/platforms/macos/src/event.rs +++ b/platforms/macos/src/event.rs @@ -5,11 +5,9 @@ use accesskit::{Live, NodeId, Role}; use accesskit_consumer::{DetachedNode, FilterResult, Node, TreeChangeHandler, TreeState}; -use icrate::{ - AppKit::*, - Foundation::{NSMutableDictionary, NSNumber, NSString}, -}; use objc2::runtime::{AnyObject, ProtocolObject}; +use objc2_app_kit::*; +use objc2_foundation::{NSMutableDictionary, NSNumber, NSString}; use std::{collections::HashSet, rc::Rc}; use crate::{ @@ -37,9 +35,9 @@ impl QueuedEvent { Self::Announcement { text: node.name().unwrap(), priority: if node.live() == Live::Assertive { - NSAccessibilityPriorityHigh + NSAccessibilityPriorityLevel::NSAccessibilityPriorityHigh } else { - NSAccessibilityPriorityMedium + NSAccessibilityPriorityLevel::NSAccessibilityPriorityMedium }, } } @@ -86,7 +84,7 @@ impl QueuedEvent { ProtocolObject::from_ref(NSAccessibilityAnnouncementKey), ) }; - let priority = NSNumber::new_isize(priority); + let priority = NSNumber::new_isize(priority.0); unsafe { user_info.setObject_forKey( &*priority, diff --git a/platforms/macos/src/lib.rs b/platforms/macos/src/lib.rs index b32206c71..5b795424e 100644 --- a/platforms/macos/src/lib.rs +++ b/platforms/macos/src/lib.rs @@ -22,4 +22,4 @@ pub use patch::add_focus_forwarder_to_window_class; mod subclass; pub use subclass::SubclassingAdapter; -pub use icrate::Foundation::{NSArray, NSObject, NSPoint}; +pub use objc2_foundation::{NSArray, NSObject, NSPoint}; diff --git a/platforms/macos/src/node.rs b/platforms/macos/src/node.rs index ca3368e7b..4386ccfa6 100644 --- a/platforms/macos/src/node.rs +++ b/platforms/macos/src/node.rs @@ -12,13 +12,6 @@ use accesskit::{Action, ActionData, ActionRequest, Checked, NodeId, Role, TextSelection}; use accesskit_consumer::{DetachedNode, FilterResult, Node, NodeState}; -use icrate::{ - AppKit::*, - Foundation::{ - ns_string, NSArray, NSCopying, NSInteger, NSNumber, NSObject, NSPoint, NSRange, NSRect, - NSString, - }, -}; use objc2::{ declare_class, msg_send_id, mutability::InteriorMutable, @@ -26,6 +19,11 @@ use objc2::{ runtime::{AnyObject, Sel}, sel, ClassType, DeclaredClass, }; +use objc2_app_kit::*; +use objc2_foundation::{ + ns_string, NSArray, NSCopying, NSInteger, NSNumber, NSObject, NSPoint, NSRange, NSRect, + NSString, +}; use std::rc::{Rc, Weak}; use crate::{context::Context, filters::filter, util::*}; diff --git a/platforms/macos/src/patch.rs b/platforms/macos/src/patch.rs index f5dc0933d..2dab00f2e 100644 --- a/platforms/macos/src/patch.rs +++ b/platforms/macos/src/patch.rs @@ -3,7 +3,6 @@ // the LICENSE-APACHE file) or the MIT license (found in // the LICENSE-MIT file), at your option. -use icrate::AppKit::NSWindow; use objc2::{ encode::{Encode, EncodeArguments, EncodeReturn, Encoding}, ffi::class_addMethod, @@ -11,6 +10,7 @@ use objc2::{ runtime::{AnyClass, AnyObject, Bool, MethodImplementation, Sel}, sel, Message, }; +use objc2_app_kit::NSWindow; use std::{ffi::CString, ptr::null_mut}; extern "C" fn focus_forwarder(this: &NSWindow, _cmd: Sel) -> *mut AnyObject { diff --git a/platforms/macos/src/subclass.rs b/platforms/macos/src/subclass.rs index 284be4428..6038055bd 100644 --- a/platforms/macos/src/subclass.rs +++ b/platforms/macos/src/subclass.rs @@ -4,10 +4,6 @@ // the LICENSE-MIT file), at your option. use accesskit::{ActionHandler, ActivationHandler, TreeUpdate}; -use icrate::{ - AppKit::{NSView, NSWindow}, - Foundation::{NSArray, NSObject, NSPoint}, -}; use objc2::{ declare::ClassBuilder, declare_class, @@ -21,6 +17,8 @@ use objc2::{ runtime::{AnyClass, Sel}, sel, ClassType, DeclaredClass, }; +use objc2_app_kit::{NSView, NSWindow}; +use objc2_foundation::{NSArray, NSObject, NSPoint}; use once_cell::sync::Lazy; use std::{cell::RefCell, collections::HashMap, ffi::c_void, sync::Mutex}; diff --git a/platforms/macos/src/util.rs b/platforms/macos/src/util.rs index 5a87008fe..e31dacd60 100644 --- a/platforms/macos/src/util.rs +++ b/platforms/macos/src/util.rs @@ -5,10 +5,8 @@ use accesskit::{Point, Rect}; use accesskit_consumer::{Node, TextPosition, TextRange}; -use icrate::{ - AppKit::*, - Foundation::{NSPoint, NSRange, NSRect, NSSize}, -}; +use objc2_app_kit::*; +use objc2_foundation::{NSPoint, NSRange, NSRect, NSSize}; pub(crate) fn from_ns_range<'a>(node: &'a Node<'a>, ns_range: NSRange) -> Option> { let pos = node.text_position_from_global_utf16_index(ns_range.location)?; @@ -37,14 +35,14 @@ pub(crate) fn to_ns_range_for_character(pos: &TextPosition) -> NSRange { pub(crate) fn from_ns_point(view: &NSView, node: &Node, point: NSPoint) -> Point { let window = view.window().unwrap(); - let point = unsafe { window.convertPointFromScreen(point) }; + let point = window.convertPointFromScreen(point); let point = view.convertPoint_fromView(point, None); // AccessKit coordinates are in physical (DPI-dependent) pixels, but // macOS provides logical (DPI-independent) coordinates here. let factor = window.backingScaleFactor(); let point = Point::new( point.x * factor, - if unsafe { view.isFlipped() } { + if view.isFlipped() { point.y * factor } else { let view_bounds = view.bounds(); @@ -63,7 +61,7 @@ pub(crate) fn to_ns_rect(view: &NSView, rect: Rect) -> NSRect { let rect = NSRect { origin: NSPoint { x: rect.x0 / factor, - y: if unsafe { view.isFlipped() } { + y: if view.isFlipped() { rect.y0 / factor } else { let view_bounds = view.bounds(); @@ -75,7 +73,7 @@ pub(crate) fn to_ns_rect(view: &NSView, rect: Rect) -> NSRect { height: rect.height() / factor, }, }; - let rect = unsafe { view.convertRect_toView(rect, None) }; + let rect = view.convertRect_toView(rect, None); let window = view.window().unwrap(); - unsafe { window.convertRectToScreen(rect) } + window.convertRectToScreen(rect) }