1use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7
8use crate::*;
9
10#[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#[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#[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#[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#[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 pub unsafe trait NSDraggingInfo: NSObjectProtocol + MainThreadOnly {
143 #[cfg(all(feature = "NSResponder", feature = "NSWindow"))]
144 #[unsafe(method(draggingDestinationWindow))]
145 #[unsafe(method_family = none)]
146 unsafe fn draggingDestinationWindow(&self) -> Option<Retained<NSWindow>>;
147
148 #[unsafe(method(draggingSourceOperationMask))]
149 #[unsafe(method_family = none)]
150 unsafe fn draggingSourceOperationMask(&self) -> NSDragOperation;
151
152 #[unsafe(method(draggingLocation))]
153 #[unsafe(method_family = none)]
154 unsafe fn draggingLocation(&self) -> NSPoint;
155
156 #[unsafe(method(draggedImageLocation))]
157 #[unsafe(method_family = none)]
158 unsafe 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 unsafe fn draggedImage(&self) -> Option<Retained<NSImage>>;
165
166 #[cfg(feature = "NSPasteboard")]
167 #[unsafe(method(draggingPasteboard))]
168 #[unsafe(method_family = none)]
169 unsafe fn draggingPasteboard(&self) -> Retained<NSPasteboard>;
170
171 #[unsafe(method(draggingSource))]
172 #[unsafe(method_family = none)]
173 unsafe fn draggingSource(&self) -> Option<Retained<AnyObject>>;
174
175 #[unsafe(method(draggingSequenceNumber))]
176 #[unsafe(method_family = none)]
177 unsafe fn draggingSequenceNumber(&self) -> NSInteger;
178
179 #[unsafe(method(slideDraggedImageTo:))]
180 #[unsafe(method_family = none)]
181 unsafe fn slideDraggedImageTo(&self, screen_point: NSPoint);
182
183 #[deprecated = "Use NSFilePromiseReceiver objects instead"]
184 #[unsafe(method(namesOfPromisedFilesDroppedAtDestination:))]
185 #[unsafe(method_family = none)]
186 unsafe fn namesOfPromisedFilesDroppedAtDestination(
187 &self,
188 drop_destination: &NSURL,
189 ) -> Option<Retained<NSArray<NSString>>>;
190
191 #[unsafe(method(draggingFormation))]
192 #[unsafe(method_family = none)]
193 unsafe fn draggingFormation(&self) -> NSDraggingFormation;
194
195 #[unsafe(method(setDraggingFormation:))]
197 #[unsafe(method_family = none)]
198 unsafe fn setDraggingFormation(&self, dragging_formation: NSDraggingFormation);
199
200 #[unsafe(method(animatesToDestination))]
201 #[unsafe(method_family = none)]
202 unsafe fn animatesToDestination(&self) -> bool;
203
204 #[unsafe(method(setAnimatesToDestination:))]
206 #[unsafe(method_family = none)]
207 unsafe fn setAnimatesToDestination(&self, animates_to_destination: bool);
208
209 #[unsafe(method(numberOfValidItemsForDrop))]
210 #[unsafe(method_family = none)]
211 unsafe fn numberOfValidItemsForDrop(&self) -> NSInteger;
212
213 #[unsafe(method(setNumberOfValidItemsForDrop:))]
215 #[unsafe(method_family = none)]
216 unsafe 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 #[unsafe(method(enumerateDraggingItemsWithOptions:forView:classes:searchOptions:usingBlock:))]
226 #[unsafe(method_family = none)]
227 unsafe fn enumerateDraggingItemsWithOptions_forView_classes_searchOptions_usingBlock(
228 &self,
229 enum_opts: NSDraggingItemEnumerationOptions,
230 view: Option<&NSView>,
231 class_array: &NSArray<AnyClass>,
232 search_options: &NSDictionary<NSPasteboardReadingOptionKey, AnyObject>,
233 block: &block2::DynBlock<dyn Fn(NonNull<NSDraggingItem>, NSInteger, NonNull<Bool>)>,
234 );
235
236 #[unsafe(method(springLoadingHighlight))]
237 #[unsafe(method_family = none)]
238 unsafe fn springLoadingHighlight(&self) -> NSSpringLoadingHighlight;
239
240 #[unsafe(method(resetSpringLoading))]
241 #[unsafe(method_family = none)]
242 unsafe fn resetSpringLoading(&self);
243 }
244);
245
246extern_protocol!(
247 pub unsafe trait NSDraggingDestination: NSObjectProtocol + MainThreadOnly {
249 #[optional]
250 #[unsafe(method(draggingEntered:))]
251 #[unsafe(method_family = none)]
252 unsafe fn draggingEntered(
253 &self,
254 sender: &ProtocolObject<dyn NSDraggingInfo>,
255 ) -> NSDragOperation;
256
257 #[optional]
258 #[unsafe(method(draggingUpdated:))]
259 #[unsafe(method_family = none)]
260 unsafe fn draggingUpdated(
261 &self,
262 sender: &ProtocolObject<dyn NSDraggingInfo>,
263 ) -> NSDragOperation;
264
265 #[optional]
266 #[unsafe(method(draggingExited:))]
267 #[unsafe(method_family = none)]
268 unsafe fn draggingExited(&self, sender: Option<&ProtocolObject<dyn NSDraggingInfo>>);
269
270 #[optional]
271 #[unsafe(method(prepareForDragOperation:))]
272 #[unsafe(method_family = none)]
273 unsafe fn prepareForDragOperation(
274 &self,
275 sender: &ProtocolObject<dyn NSDraggingInfo>,
276 ) -> bool;
277
278 #[optional]
279 #[unsafe(method(performDragOperation:))]
280 #[unsafe(method_family = none)]
281 unsafe fn performDragOperation(&self, sender: &ProtocolObject<dyn NSDraggingInfo>) -> bool;
282
283 #[optional]
284 #[unsafe(method(concludeDragOperation:))]
285 #[unsafe(method_family = none)]
286 unsafe fn concludeDragOperation(&self, sender: Option<&ProtocolObject<dyn NSDraggingInfo>>);
287
288 #[optional]
289 #[unsafe(method(draggingEnded:))]
290 #[unsafe(method_family = none)]
291 unsafe fn draggingEnded(&self, sender: &ProtocolObject<dyn NSDraggingInfo>);
292
293 #[optional]
294 #[unsafe(method(wantsPeriodicDraggingUpdates))]
295 #[unsafe(method_family = none)]
296 unsafe fn wantsPeriodicDraggingUpdates(&self) -> bool;
297
298 #[optional]
299 #[unsafe(method(updateDraggingItemsForDrag:))]
300 #[unsafe(method_family = none)]
301 unsafe fn updateDraggingItemsForDrag(
302 &self,
303 sender: Option<&ProtocolObject<dyn NSDraggingInfo>>,
304 );
305 }
306);
307
308extern_protocol!(
309 pub unsafe trait NSDraggingSource: NSObjectProtocol + MainThreadOnly {
311 #[cfg(feature = "NSDraggingSession")]
312 #[unsafe(method(draggingSession:sourceOperationMaskForDraggingContext:))]
313 #[unsafe(method_family = none)]
314 unsafe fn draggingSession_sourceOperationMaskForDraggingContext(
315 &self,
316 session: &NSDraggingSession,
317 context: NSDraggingContext,
318 ) -> NSDragOperation;
319
320 #[cfg(feature = "NSDraggingSession")]
321 #[optional]
322 #[unsafe(method(draggingSession:willBeginAtPoint:))]
323 #[unsafe(method_family = none)]
324 unsafe fn draggingSession_willBeginAtPoint(
325 &self,
326 session: &NSDraggingSession,
327 screen_point: NSPoint,
328 );
329
330 #[cfg(feature = "NSDraggingSession")]
331 #[optional]
332 #[unsafe(method(draggingSession:movedToPoint:))]
333 #[unsafe(method_family = none)]
334 unsafe fn draggingSession_movedToPoint(
335 &self,
336 session: &NSDraggingSession,
337 screen_point: NSPoint,
338 );
339
340 #[cfg(feature = "NSDraggingSession")]
341 #[optional]
342 #[unsafe(method(draggingSession:endedAtPoint:operation:))]
343 #[unsafe(method_family = none)]
344 unsafe fn draggingSession_endedAtPoint_operation(
345 &self,
346 session: &NSDraggingSession,
347 screen_point: NSPoint,
348 operation: NSDragOperation,
349 );
350
351 #[cfg(feature = "NSDraggingSession")]
352 #[optional]
353 #[unsafe(method(ignoreModifierKeysForDraggingSession:))]
354 #[unsafe(method_family = none)]
355 unsafe fn ignoreModifierKeysForDraggingSession(&self, session: &NSDraggingSession) -> bool;
356 }
357);
358
359#[repr(transparent)]
362#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
363pub struct NSSpringLoadingOptions(pub NSUInteger);
364bitflags::bitflags! {
365 impl NSSpringLoadingOptions: NSUInteger {
366 #[doc(alias = "NSSpringLoadingDisabled")]
367 const Disabled = 0;
368 #[doc(alias = "NSSpringLoadingEnabled")]
369 const Enabled = 1<<0;
370 #[doc(alias = "NSSpringLoadingContinuousActivation")]
371 const ContinuousActivation = 1<<1;
372 #[doc(alias = "NSSpringLoadingNoHover")]
373 const NoHover = 1<<3;
374 }
375}
376
377unsafe impl Encode for NSSpringLoadingOptions {
378 const ENCODING: Encoding = NSUInteger::ENCODING;
379}
380
381unsafe impl RefEncode for NSSpringLoadingOptions {
382 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
383}
384
385extern_protocol!(
386 pub unsafe trait NSSpringLoadingDestination: NSObjectProtocol + MainThreadOnly {
388 #[unsafe(method(springLoadingActivated:draggingInfo:))]
389 #[unsafe(method_family = none)]
390 unsafe fn springLoadingActivated_draggingInfo(
391 &self,
392 activated: bool,
393 dragging_info: &ProtocolObject<dyn NSDraggingInfo>,
394 );
395
396 #[unsafe(method(springLoadingHighlightChanged:))]
397 #[unsafe(method_family = none)]
398 unsafe fn springLoadingHighlightChanged(
399 &self,
400 dragging_info: &ProtocolObject<dyn NSDraggingInfo>,
401 );
402
403 #[optional]
404 #[unsafe(method(springLoadingEntered:))]
405 #[unsafe(method_family = none)]
406 unsafe fn springLoadingEntered(
407 &self,
408 dragging_info: &ProtocolObject<dyn NSDraggingInfo>,
409 ) -> NSSpringLoadingOptions;
410
411 #[optional]
412 #[unsafe(method(springLoadingUpdated:))]
413 #[unsafe(method_family = none)]
414 unsafe fn springLoadingUpdated(
415 &self,
416 dragging_info: &ProtocolObject<dyn NSDraggingInfo>,
417 ) -> NSSpringLoadingOptions;
418
419 #[optional]
420 #[unsafe(method(springLoadingExited:))]
421 #[unsafe(method_family = none)]
422 unsafe fn springLoadingExited(&self, dragging_info: &ProtocolObject<dyn NSDraggingInfo>);
423
424 #[optional]
425 #[unsafe(method(draggingEnded:))]
426 #[unsafe(method_family = none)]
427 unsafe fn draggingEnded(&self, dragging_info: &ProtocolObject<dyn NSDraggingInfo>);
428 }
429);