objc2_app_kit/generated/
NSDragging.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7
8use crate::*;
9
10/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsdragoperation?language=objc)
11// NS_OPTIONS
12#[repr(transparent)]
13#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
14pub struct NSDragOperation(pub NSUInteger);
15bitflags::bitflags! {
16    impl NSDragOperation: NSUInteger {
17        #[doc(alias = "NSDragOperationNone")]
18        const None = 0;
19        #[doc(alias = "NSDragOperationCopy")]
20        const Copy = 1;
21        #[doc(alias = "NSDragOperationLink")]
22        const Link = 2;
23        #[doc(alias = "NSDragOperationGeneric")]
24        const Generic = 4;
25        #[doc(alias = "NSDragOperationPrivate")]
26        const Private = 8;
27        #[doc(alias = "NSDragOperationMove")]
28        const Move = 16;
29        #[doc(alias = "NSDragOperationDelete")]
30        const Delete = 32;
31        #[doc(alias = "NSDragOperationEvery")]
32        const Every = NSUIntegerMax as _;
33        #[doc(alias = "NSDragOperationAll_Obsolete")]
34#[deprecated]
35        const All_Obsolete = 15;
36        #[doc(alias = "NSDragOperationAll")]
37#[deprecated]
38        const All = NSDragOperation::All_Obsolete.0;
39    }
40}
41
42unsafe impl Encode for NSDragOperation {
43    const ENCODING: Encoding = NSUInteger::ENCODING;
44}
45
46unsafe impl RefEncode for NSDragOperation {
47    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
48}
49
50/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsdraggingformation?language=objc)
51// NS_ENUM
52#[repr(transparent)]
53#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
54pub struct NSDraggingFormation(pub NSInteger);
55impl NSDraggingFormation {
56    #[doc(alias = "NSDraggingFormationDefault")]
57    pub const Default: Self = Self(0);
58    #[doc(alias = "NSDraggingFormationNone")]
59    pub const None: Self = Self(1);
60    #[doc(alias = "NSDraggingFormationPile")]
61    pub const Pile: Self = Self(2);
62    #[doc(alias = "NSDraggingFormationList")]
63    pub const List: Self = Self(3);
64    #[doc(alias = "NSDraggingFormationStack")]
65    pub const Stack: Self = Self(4);
66}
67
68unsafe impl Encode for NSDraggingFormation {
69    const ENCODING: Encoding = NSInteger::ENCODING;
70}
71
72unsafe impl RefEncode for NSDraggingFormation {
73    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
74}
75
76/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsdraggingcontext?language=objc)
77// NS_ENUM
78#[repr(transparent)]
79#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
80pub struct NSDraggingContext(pub NSInteger);
81impl NSDraggingContext {
82    #[doc(alias = "NSDraggingContextOutsideApplication")]
83    pub const OutsideApplication: Self = Self(0);
84    #[doc(alias = "NSDraggingContextWithinApplication")]
85    pub const WithinApplication: Self = Self(1);
86}
87
88unsafe impl Encode for NSDraggingContext {
89    const ENCODING: Encoding = NSInteger::ENCODING;
90}
91
92unsafe impl RefEncode for NSDraggingContext {
93    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
94}
95
96/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsdraggingitemenumerationoptions?language=objc)
97// NS_OPTIONS
98#[repr(transparent)]
99#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
100pub struct NSDraggingItemEnumerationOptions(pub NSUInteger);
101bitflags::bitflags! {
102    impl NSDraggingItemEnumerationOptions: NSUInteger {
103        #[doc(alias = "NSDraggingItemEnumerationConcurrent")]
104        const Concurrent = NSEnumerationOptions::Concurrent.0;
105        #[doc(alias = "NSDraggingItemEnumerationClearNonenumeratedImages")]
106        const ClearNonenumeratedImages = 1<<16;
107    }
108}
109
110unsafe impl Encode for NSDraggingItemEnumerationOptions {
111    const ENCODING: Encoding = NSUInteger::ENCODING;
112}
113
114unsafe impl RefEncode for NSDraggingItemEnumerationOptions {
115    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
116}
117
118/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsspringloadinghighlight?language=objc)
119// NS_ENUM
120#[repr(transparent)]
121#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
122pub struct NSSpringLoadingHighlight(pub NSInteger);
123impl NSSpringLoadingHighlight {
124    #[doc(alias = "NSSpringLoadingHighlightNone")]
125    pub const None: Self = Self(0);
126    #[doc(alias = "NSSpringLoadingHighlightStandard")]
127    pub const Standard: Self = Self(1);
128    #[doc(alias = "NSSpringLoadingHighlightEmphasized")]
129    pub const Emphasized: Self = Self(2);
130}
131
132unsafe impl Encode for NSSpringLoadingHighlight {
133    const ENCODING: Encoding = NSInteger::ENCODING;
134}
135
136unsafe impl RefEncode for NSSpringLoadingHighlight {
137    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
138}
139
140extern_protocol!(
141    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsdragginginfo?language=objc)
142    pub unsafe trait NSDraggingInfo: NSObjectProtocol + MainThreadOnly {
143        #[cfg(all(feature = "NSResponder", feature = "NSWindow"))]
144        #[unsafe(method(draggingDestinationWindow))]
145        #[unsafe(method_family = none)]
146        fn draggingDestinationWindow(&self) -> Option<Retained<NSWindow>>;
147
148        #[unsafe(method(draggingSourceOperationMask))]
149        #[unsafe(method_family = none)]
150        fn draggingSourceOperationMask(&self) -> NSDragOperation;
151
152        #[unsafe(method(draggingLocation))]
153        #[unsafe(method_family = none)]
154        fn draggingLocation(&self) -> NSPoint;
155
156        #[unsafe(method(draggedImageLocation))]
157        #[unsafe(method_family = none)]
158        fn draggedImageLocation(&self) -> NSPoint;
159
160        #[cfg(feature = "NSImage")]
161        #[deprecated = "Use NSDraggingItem objects instead"]
162        #[unsafe(method(draggedImage))]
163        #[unsafe(method_family = none)]
164        fn draggedImage(&self) -> Option<Retained<NSImage>>;
165
166        #[cfg(feature = "NSPasteboard")]
167        #[unsafe(method(draggingPasteboard))]
168        #[unsafe(method_family = none)]
169        fn draggingPasteboard(&self) -> Retained<NSPasteboard>;
170
171        #[unsafe(method(draggingSource))]
172        #[unsafe(method_family = none)]
173        fn draggingSource(&self) -> Option<Retained<AnyObject>>;
174
175        #[unsafe(method(draggingSequenceNumber))]
176        #[unsafe(method_family = none)]
177        fn draggingSequenceNumber(&self) -> NSInteger;
178
179        #[unsafe(method(slideDraggedImageTo:))]
180        #[unsafe(method_family = none)]
181        fn slideDraggedImageTo(&self, screen_point: NSPoint);
182
183        #[deprecated = "Use NSFilePromiseReceiver objects instead"]
184        #[unsafe(method(namesOfPromisedFilesDroppedAtDestination:))]
185        #[unsafe(method_family = none)]
186        fn namesOfPromisedFilesDroppedAtDestination(
187            &self,
188            drop_destination: &NSURL,
189        ) -> Option<Retained<NSArray<NSString>>>;
190
191        #[unsafe(method(draggingFormation))]
192        #[unsafe(method_family = none)]
193        fn draggingFormation(&self) -> NSDraggingFormation;
194
195        /// Setter for [`draggingFormation`][Self::draggingFormation].
196        #[unsafe(method(setDraggingFormation:))]
197        #[unsafe(method_family = none)]
198        fn setDraggingFormation(&self, dragging_formation: NSDraggingFormation);
199
200        #[unsafe(method(animatesToDestination))]
201        #[unsafe(method_family = none)]
202        fn animatesToDestination(&self) -> bool;
203
204        /// Setter for [`animatesToDestination`][Self::animatesToDestination].
205        #[unsafe(method(setAnimatesToDestination:))]
206        #[unsafe(method_family = none)]
207        fn setAnimatesToDestination(&self, animates_to_destination: bool);
208
209        #[unsafe(method(numberOfValidItemsForDrop))]
210        #[unsafe(method_family = none)]
211        fn numberOfValidItemsForDrop(&self) -> NSInteger;
212
213        /// Setter for [`numberOfValidItemsForDrop`][Self::numberOfValidItemsForDrop].
214        #[unsafe(method(setNumberOfValidItemsForDrop:))]
215        #[unsafe(method_family = none)]
216        fn setNumberOfValidItemsForDrop(&self, number_of_valid_items_for_drop: NSInteger);
217
218        #[cfg(all(
219            feature = "NSDraggingItem",
220            feature = "NSPasteboard",
221            feature = "NSResponder",
222            feature = "NSView",
223            feature = "block2"
224        ))]
225        /// # Safety
226        ///
227        /// - `class_array` generic probably has further requirements.
228        /// - `search_options` generic should be of the correct type.
229        #[unsafe(method(enumerateDraggingItemsWithOptions:forView:classes:searchOptions:usingBlock:))]
230        #[unsafe(method_family = none)]
231        unsafe fn enumerateDraggingItemsWithOptions_forView_classes_searchOptions_usingBlock(
232            &self,
233            enum_opts: NSDraggingItemEnumerationOptions,
234            view: Option<&NSView>,
235            class_array: &NSArray<AnyClass>,
236            search_options: &NSDictionary<NSPasteboardReadingOptionKey, AnyObject>,
237            block: &block2::DynBlock<dyn Fn(NonNull<NSDraggingItem>, NSInteger, NonNull<Bool>)>,
238        );
239
240        #[unsafe(method(springLoadingHighlight))]
241        #[unsafe(method_family = none)]
242        fn springLoadingHighlight(&self) -> NSSpringLoadingHighlight;
243
244        #[unsafe(method(resetSpringLoading))]
245        #[unsafe(method_family = none)]
246        fn resetSpringLoading(&self);
247    }
248);
249
250extern_protocol!(
251    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsdraggingdestination?language=objc)
252    pub unsafe trait NSDraggingDestination: NSObjectProtocol + MainThreadOnly {
253        #[optional]
254        #[unsafe(method(draggingEntered:))]
255        #[unsafe(method_family = none)]
256        fn draggingEntered(&self, sender: &ProtocolObject<dyn NSDraggingInfo>) -> NSDragOperation;
257
258        #[optional]
259        #[unsafe(method(draggingUpdated:))]
260        #[unsafe(method_family = none)]
261        fn draggingUpdated(&self, sender: &ProtocolObject<dyn NSDraggingInfo>) -> NSDragOperation;
262
263        #[optional]
264        #[unsafe(method(draggingExited:))]
265        #[unsafe(method_family = none)]
266        fn draggingExited(&self, sender: Option<&ProtocolObject<dyn NSDraggingInfo>>);
267
268        #[optional]
269        #[unsafe(method(prepareForDragOperation:))]
270        #[unsafe(method_family = none)]
271        fn prepareForDragOperation(&self, sender: &ProtocolObject<dyn NSDraggingInfo>) -> bool;
272
273        #[optional]
274        #[unsafe(method(performDragOperation:))]
275        #[unsafe(method_family = none)]
276        fn performDragOperation(&self, sender: &ProtocolObject<dyn NSDraggingInfo>) -> bool;
277
278        #[optional]
279        #[unsafe(method(concludeDragOperation:))]
280        #[unsafe(method_family = none)]
281        fn concludeDragOperation(&self, sender: Option<&ProtocolObject<dyn NSDraggingInfo>>);
282
283        #[optional]
284        #[unsafe(method(draggingEnded:))]
285        #[unsafe(method_family = none)]
286        fn draggingEnded(&self, sender: &ProtocolObject<dyn NSDraggingInfo>);
287
288        #[optional]
289        #[unsafe(method(wantsPeriodicDraggingUpdates))]
290        #[unsafe(method_family = none)]
291        fn wantsPeriodicDraggingUpdates(&self) -> bool;
292
293        #[optional]
294        #[unsafe(method(updateDraggingItemsForDrag:))]
295        #[unsafe(method_family = none)]
296        fn updateDraggingItemsForDrag(&self, sender: Option<&ProtocolObject<dyn NSDraggingInfo>>);
297    }
298);
299
300extern_protocol!(
301    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsdraggingsource?language=objc)
302    pub unsafe trait NSDraggingSource: NSObjectProtocol + MainThreadOnly {
303        #[cfg(feature = "NSDraggingSession")]
304        #[unsafe(method(draggingSession:sourceOperationMaskForDraggingContext:))]
305        #[unsafe(method_family = none)]
306        fn draggingSession_sourceOperationMaskForDraggingContext(
307            &self,
308            session: &NSDraggingSession,
309            context: NSDraggingContext,
310        ) -> NSDragOperation;
311
312        #[cfg(feature = "NSDraggingSession")]
313        #[optional]
314        #[unsafe(method(draggingSession:willBeginAtPoint:))]
315        #[unsafe(method_family = none)]
316        fn draggingSession_willBeginAtPoint(
317            &self,
318            session: &NSDraggingSession,
319            screen_point: NSPoint,
320        );
321
322        #[cfg(feature = "NSDraggingSession")]
323        #[optional]
324        #[unsafe(method(draggingSession:movedToPoint:))]
325        #[unsafe(method_family = none)]
326        fn draggingSession_movedToPoint(&self, session: &NSDraggingSession, screen_point: NSPoint);
327
328        #[cfg(feature = "NSDraggingSession")]
329        #[optional]
330        #[unsafe(method(draggingSession:endedAtPoint:operation:))]
331        #[unsafe(method_family = none)]
332        fn draggingSession_endedAtPoint_operation(
333            &self,
334            session: &NSDraggingSession,
335            screen_point: NSPoint,
336            operation: NSDragOperation,
337        );
338
339        #[cfg(feature = "NSDraggingSession")]
340        #[optional]
341        #[unsafe(method(ignoreModifierKeysForDraggingSession:))]
342        #[unsafe(method_family = none)]
343        fn ignoreModifierKeysForDraggingSession(&self, session: &NSDraggingSession) -> bool;
344    }
345);
346
347/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsspringloadingoptions?language=objc)
348// NS_OPTIONS
349#[repr(transparent)]
350#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
351pub struct NSSpringLoadingOptions(pub NSUInteger);
352bitflags::bitflags! {
353    impl NSSpringLoadingOptions: NSUInteger {
354        #[doc(alias = "NSSpringLoadingDisabled")]
355        const Disabled = 0;
356        #[doc(alias = "NSSpringLoadingEnabled")]
357        const Enabled = 1<<0;
358        #[doc(alias = "NSSpringLoadingContinuousActivation")]
359        const ContinuousActivation = 1<<1;
360        #[doc(alias = "NSSpringLoadingNoHover")]
361        const NoHover = 1<<3;
362    }
363}
364
365unsafe impl Encode for NSSpringLoadingOptions {
366    const ENCODING: Encoding = NSUInteger::ENCODING;
367}
368
369unsafe impl RefEncode for NSSpringLoadingOptions {
370    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
371}
372
373extern_protocol!(
374    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsspringloadingdestination?language=objc)
375    pub unsafe trait NSSpringLoadingDestination: NSObjectProtocol + MainThreadOnly {
376        #[unsafe(method(springLoadingActivated:draggingInfo:))]
377        #[unsafe(method_family = none)]
378        fn springLoadingActivated_draggingInfo(
379            &self,
380            activated: bool,
381            dragging_info: &ProtocolObject<dyn NSDraggingInfo>,
382        );
383
384        #[unsafe(method(springLoadingHighlightChanged:))]
385        #[unsafe(method_family = none)]
386        fn springLoadingHighlightChanged(&self, dragging_info: &ProtocolObject<dyn NSDraggingInfo>);
387
388        #[optional]
389        #[unsafe(method(springLoadingEntered:))]
390        #[unsafe(method_family = none)]
391        fn springLoadingEntered(
392            &self,
393            dragging_info: &ProtocolObject<dyn NSDraggingInfo>,
394        ) -> NSSpringLoadingOptions;
395
396        #[optional]
397        #[unsafe(method(springLoadingUpdated:))]
398        #[unsafe(method_family = none)]
399        fn springLoadingUpdated(
400            &self,
401            dragging_info: &ProtocolObject<dyn NSDraggingInfo>,
402        ) -> NSSpringLoadingOptions;
403
404        #[optional]
405        #[unsafe(method(springLoadingExited:))]
406        #[unsafe(method_family = none)]
407        fn springLoadingExited(&self, dragging_info: &ProtocolObject<dyn NSDraggingInfo>);
408
409        #[optional]
410        #[unsafe(method(draggingEnded:))]
411        #[unsafe(method_family = none)]
412        fn draggingEnded(&self, dragging_info: &ProtocolObject<dyn NSDraggingInfo>);
413    }
414);