Skip to content

Commit e0891b6

Browse files
committed
Mark a few UIKit methods as safe
1 parent 4687583 commit e0891b6

File tree

5 files changed

+119
-1
lines changed

5 files changed

+119
-1
lines changed

framework-crates/objc2-ui-kit/src/gesture

Whitespace-only changes.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
use objc2::extern_methods;
2+
3+
use crate::{UIGestureRecognizer, UIGestureRecognizerState};
4+
5+
extern_methods!(
6+
unsafe impl UIGestureRecognizer {
7+
#[method(state)]
8+
pub fn state(&self) -> UIGestureRecognizerState;
9+
}
10+
);

framework-crates/objc2-ui-kit/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ extern crate std;
1818

1919
mod generated;
2020
mod geometry;
21+
#[cfg(feature = "UIGestureRecognizer")]
22+
mod gesture_recognizer;
2123
#[cfg(feature = "UIPasteConfigurationSupporting")]
2224
mod paste_configuration;
2325
#[cfg(feature = "UIResponder")]

framework-crates/objc2-ui-kit/translation-config.toml

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,3 +167,109 @@ class.UITraitToolbarItemPresentationSize.mutability = "MainThreadOnly"
167167
class.UITraitImageDynamicRange.mutability = "MainThreadOnly"
168168
class.UITraitTypesettingLanguage.mutability = "MainThreadOnly"
169169
class.UITraitSceneCaptureState.mutability = "MainThreadOnly"
170+
171+
###
172+
### Safety
173+
###
174+
### Methods used in Winit, marked safe mostly for convenience there.
175+
###
176+
177+
class.UIApplication.methods.windows.unsafe = false
178+
class.UIApplication.methods.sharedApplication.unsafe = false
179+
class.UIApplication.methods.statusBarFrame.unsafe = false
180+
protocol.UICoordinateSpace.methods."convertPoint:toCoordinateSpace:".unsafe = false
181+
protocol.UICoordinateSpace.methods."convertPoint:fromCoordinateSpace:".unsafe = false
182+
protocol.UICoordinateSpace.methods."convertRect:toCoordinateSpace:".unsafe = false
183+
protocol.UICoordinateSpace.methods."convertRect:fromCoordinateSpace:".unsafe = false
184+
protocol.UICoordinateSpace.methods.bounds.unsafe = false
185+
class.UIDevice.methods.currentDevice.unsafe = false
186+
class.UIDevice.methods.userInterfaceIdiom.unsafe = false
187+
class.UIGestureRecognizer.methods.delegate.unsafe = false
188+
class.UIGestureRecognizer.methods."setDelegate:".unsafe = false
189+
class.UIPanGestureRecognizer.methods.maximumNumberOfTouches.unsafe = false
190+
class.UIPanGestureRecognizer.methods."setMaximumNumberOfTouches:".unsafe = false
191+
class.UIPanGestureRecognizer.methods.minimumNumberOfTouches.unsafe = false
192+
class.UIPanGestureRecognizer.methods."setMinimumNumberOfTouches:".unsafe = false
193+
class.UIPanGestureRecognizer.methods."translationInView:".unsafe = false
194+
class.UIPanGestureRecognizer.methods."setTranslation:inView:".unsafe = false
195+
class.UIPanGestureRecognizer.methods."velocityInView:".unsafe = false
196+
class.UIPanGestureRecognizer.methods.allowedScrollTypesMask.unsafe = false
197+
class.UIPinchGestureRecognizer.methods.scale.unsafe = false
198+
class.UIPinchGestureRecognizer.methods.velocity.unsafe = false
199+
# UIResponder
200+
class.UIRotationGestureRecognizer.methods.rotation.unsafe = false
201+
class.UIRotationGestureRecognizer.methods.velocity.unsafe = false
202+
class.UITapGestureRecognizer.methods.buttonMaskRequired.unsafe = false
203+
class.UITapGestureRecognizer.methods."setButtonMaskRequired:".unsafe = false
204+
class.UITapGestureRecognizer.methods.numberOfTapsRequired.unsafe = false
205+
class.UITapGestureRecognizer.methods."setNumberOfTapsRequired:".unsafe = false
206+
class.UITapGestureRecognizer.methods.numberOfTouchesRequired.unsafe = false
207+
class.UITapGestureRecognizer.methods."setNumberOfTouchesRequired:".unsafe = false
208+
class.UIScreen.methods.mainScreen.unsafe = false
209+
class.UIScreen.methods.screens.unsafe = false
210+
class.UIScreen.methods.mirroredScreen.unsafe = false
211+
class.UIScreen.methods.nativeBounds.unsafe = false
212+
class.UIScreen.methods.nativeScale.unsafe = false
213+
class.UIScreen.methods.preferredMode.unsafe = false
214+
class.UIScreen.methods.maximumFramesPerSecond.unsafe = false
215+
class.UIScreen.methods.currentMode.unsafe = false
216+
class.UIScreen.methods.availableModes.unsafe = false
217+
class.UIScreen.methods."setCurrentMode:".unsafe = false
218+
class.UIScreen.methods.bounds.unsafe = false
219+
class.UIScreen.methods.scale.unsafe = false
220+
class.UIScreen.methods.overscanCompensation.unsafe = false
221+
class.UIScreen.methods."setOverscanCompensation:".unsafe = false
222+
class.UIScreen.methods.coordinateSpace.unsafe = false
223+
class.UIScreenMode.methods.size.unsafe = false
224+
class.UITraitCollection.methods.forceTouchCapability.unsafe = false
225+
protocol.UITraitEnvironment.methods.traitCollection.unsafe = false
226+
class.UITouch.methods."locationInView:".unsafe = false
227+
class.UITouch.methods."previousLocationInView:".unsafe = false
228+
class.UITouch.methods.view.unsafe = false
229+
class.UITouch.methods.window.unsafe = false
230+
class.UITouch.methods.tapCount.unsafe = false
231+
class.UITouch.methods.timestamp.unsafe = false
232+
class.UITouch.methods.type.unsafe = false
233+
class.UITouch.methods.phase.unsafe = false
234+
class.UITouch.methods.force.unsafe = false
235+
class.UITouch.methods.maximumPossibleForce.unsafe = false
236+
class.UITouch.methods.altitudeAngle.unsafe = false
237+
class.UITouch.methods."azimuthAngleInView:".unsafe = false
238+
class.UITouch.methods."azimuthUnitVectorInView:".unsafe = false
239+
class.UITouch.methods.rollAngle.unsafe = false
240+
class.UIView.methods."initWithFrame:".unsafe = false
241+
class.UIView.methods.backgroundColor.unsafe = false
242+
class.UIView.methods."setBackgroundColor:".unsafe = false
243+
class.UIView.methods.layerClass.unsafe = false
244+
class.UIView.methods.layer.unsafe = false
245+
class.UIView.methods.frame.unsafe = false
246+
class.UIView.methods."setFrame:".unsafe = false
247+
class.UIView.methods.bounds.unsafe = false
248+
class.UIView.methods."setBounds:".unsafe = false
249+
class.UIView.methods.superview.unsafe = false
250+
class.UIView.methods.subviews.unsafe = false
251+
class.UIView.methods.window.unsafe = false
252+
class.UIView.methods.multipleTouchEnabled.unsafe = false
253+
class.UIView.methods."setMultipleTouchEnabled:".unsafe = false
254+
class.UIView.methods.contentScaleFactor.unsafe = false
255+
class.UIView.methods."setContentScaleFactor:".unsafe = false
256+
class.UIView.methods."addGestureRecognizer:".unsafe = false
257+
class.UIView.methods."removeGestureRecognizer:".unsafe = false
258+
class.UIView.methods.gestureRecognizers.unsafe = false
259+
class.UIView.methods."gestureRecognizerShouldBegin:".unsafe = false
260+
class.UIView.methods.isHidden.unsafe = false
261+
class.UIView.methods."setHidden:".unsafe = false
262+
class.UIView.methods.setNeedsDisplay.unsafe = false
263+
class.UIView.methods.safeAreaInsets.unsafe = false
264+
class.UIViewController.methods.attemptRotationToDeviceOrientation.unsafe = false
265+
class.UIViewController.methods.setNeedsStatusBarAppearanceUpdate.unsafe = false
266+
class.UIViewController.methods.setNeedsUpdateOfHomeIndicatorAutoHidden.unsafe = false
267+
class.UIViewController.methods.setNeedsUpdateOfScreenEdgesDeferringSystemGestures.unsafe = false
268+
class.UIViewController.methods.view.unsafe = false
269+
class.UIViewController.methods."setView:".unsafe = false
270+
class.UIWindow.methods.screen.unsafe = false
271+
class.UIWindow.methods."setScreen:".unsafe = false
272+
class.UIWindow.methods.rootViewController.unsafe = false
273+
class.UIWindow.methods."setRootViewController:".unsafe = false
274+
class.UIWindow.methods.makeKeyAndVisible.unsafe = false
275+
class.UIWindow.methods.isKeyWindow.unsafe = false

0 commit comments

Comments
 (0)