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 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 #[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 #[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 #[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 #[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 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 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#[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 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);