use crate::common::*;
use crate::AppKit::*;
use crate::CoreData::*;
use crate::Foundation::*;
ns_options!(
#[underlying(NSUInteger)]
pub enum NSDragOperation {
NSDragOperationNone = 0,
NSDragOperationCopy = 1,
NSDragOperationLink = 2,
NSDragOperationGeneric = 4,
NSDragOperationPrivate = 8,
NSDragOperationMove = 16,
NSDragOperationDelete = 32,
NSDragOperationEvery = NSUIntegerMax as _,
#[deprecated]
NSDragOperationAll_Obsolete = 15,
#[deprecated]
NSDragOperationAll = NSDragOperationAll_Obsolete,
}
);
ns_enum!(
#[underlying(NSInteger)]
pub enum NSDraggingFormation {
NSDraggingFormationDefault = 0,
NSDraggingFormationNone = 1,
NSDraggingFormationPile = 2,
NSDraggingFormationList = 3,
NSDraggingFormationStack = 4,
}
);
ns_enum!(
#[underlying(NSInteger)]
pub enum NSDraggingContext {
NSDraggingContextOutsideApplication = 0,
NSDraggingContextWithinApplication = 1,
}
);
ns_options!(
#[underlying(NSUInteger)]
pub enum NSDraggingItemEnumerationOptions {
NSDraggingItemEnumerationConcurrent = NSEnumerationConcurrent,
NSDraggingItemEnumerationClearNonenumeratedImages = 1 << 16,
}
);
ns_enum!(
#[underlying(NSInteger)]
pub enum NSSpringLoadingHighlight {
NSSpringLoadingHighlightNone = 0,
NSSpringLoadingHighlightStandard = 1,
NSSpringLoadingHighlightEmphasized = 2,
}
);
extern_protocol!(
pub unsafe trait NSDraggingInfo: NSObjectProtocol + IsMainThreadOnly {
#[cfg(feature = "AppKit_NSWindow")]
#[method_id(@__retain_semantics Other draggingDestinationWindow)]
unsafe fn draggingDestinationWindow(&self) -> Option<Id<NSWindow>>;
#[method(draggingSourceOperationMask)]
unsafe fn draggingSourceOperationMask(&self) -> NSDragOperation;
#[method(draggingLocation)]
unsafe fn draggingLocation(&self) -> NSPoint;
#[method(draggedImageLocation)]
unsafe fn draggedImageLocation(&self) -> NSPoint;
#[cfg(feature = "AppKit_NSImage")]
#[deprecated = "Use NSDraggingItem objects instead"]
#[method_id(@__retain_semantics Other draggedImage)]
unsafe fn draggedImage(&self) -> Option<Id<NSImage>>;
#[cfg(feature = "AppKit_NSPasteboard")]
#[method_id(@__retain_semantics Other draggingPasteboard)]
unsafe fn draggingPasteboard(&self) -> Id<NSPasteboard>;
#[method_id(@__retain_semantics Other draggingSource)]
unsafe fn draggingSource(&self) -> Option<Id<AnyObject>>;
#[method(draggingSequenceNumber)]
unsafe fn draggingSequenceNumber(&self) -> NSInteger;
#[method(slideDraggedImageTo:)]
unsafe fn slideDraggedImageTo(&self, screen_point: NSPoint);
#[cfg(all(
feature = "Foundation_NSArray",
feature = "Foundation_NSString",
feature = "Foundation_NSURL"
))]
#[deprecated = "Use NSFilePromiseReceiver objects instead"]
#[method_id(@__retain_semantics Other namesOfPromisedFilesDroppedAtDestination:)]
unsafe fn namesOfPromisedFilesDroppedAtDestination(
&self,
drop_destination: &NSURL,
) -> Option<Id<NSArray<NSString>>>;
#[method(draggingFormation)]
unsafe fn draggingFormation(&self) -> NSDraggingFormation;
#[method(setDraggingFormation:)]
unsafe fn setDraggingFormation(&self, dragging_formation: NSDraggingFormation);
#[method(animatesToDestination)]
unsafe fn animatesToDestination(&self) -> bool;
#[method(setAnimatesToDestination:)]
unsafe fn setAnimatesToDestination(&self, animates_to_destination: bool);
#[method(numberOfValidItemsForDrop)]
unsafe fn numberOfValidItemsForDrop(&self) -> NSInteger;
#[method(setNumberOfValidItemsForDrop:)]
unsafe fn setNumberOfValidItemsForDrop(&self, number_of_valid_items_for_drop: NSInteger);
#[cfg(all(
feature = "AppKit_NSDraggingItem",
feature = "AppKit_NSView",
feature = "Foundation_NSArray",
feature = "Foundation_NSDictionary"
))]
#[method(enumerateDraggingItemsWithOptions:forView:classes:searchOptions:usingBlock:)]
unsafe fn enumerateDraggingItemsWithOptions_forView_classes_searchOptions_usingBlock(
&self,
enum_opts: NSDraggingItemEnumerationOptions,
view: Option<&NSView>,
class_array: &NSArray<TodoClass>,
search_options: &NSDictionary<NSPasteboardReadingOptionKey, AnyObject>,
block: &Block<(NonNull<NSDraggingItem>, NSInteger, NonNull<Bool>), ()>,
);
#[method(springLoadingHighlight)]
unsafe fn springLoadingHighlight(&self) -> NSSpringLoadingHighlight;
#[method(resetSpringLoading)]
unsafe fn resetSpringLoading(&self);
}
unsafe impl ProtocolType for dyn NSDraggingInfo {}
);
extern_protocol!(
pub unsafe trait NSDraggingDestination: NSObjectProtocol + IsMainThreadOnly {
#[optional]
#[method(draggingEntered:)]
unsafe fn draggingEntered(
&self,
sender: &ProtocolObject<dyn NSDraggingInfo>,
) -> NSDragOperation;
#[optional]
#[method(draggingUpdated:)]
unsafe fn draggingUpdated(
&self,
sender: &ProtocolObject<dyn NSDraggingInfo>,
) -> NSDragOperation;
#[optional]
#[method(draggingExited:)]
unsafe fn draggingExited(&self, sender: Option<&ProtocolObject<dyn NSDraggingInfo>>);
#[optional]
#[method(prepareForDragOperation:)]
unsafe fn prepareForDragOperation(
&self,
sender: &ProtocolObject<dyn NSDraggingInfo>,
) -> bool;
#[optional]
#[method(performDragOperation:)]
unsafe fn performDragOperation(&self, sender: &ProtocolObject<dyn NSDraggingInfo>) -> bool;
#[optional]
#[method(concludeDragOperation:)]
unsafe fn concludeDragOperation(&self, sender: Option<&ProtocolObject<dyn NSDraggingInfo>>);
#[optional]
#[method(draggingEnded:)]
unsafe fn draggingEnded(&self, sender: &ProtocolObject<dyn NSDraggingInfo>);
#[optional]
#[method(wantsPeriodicDraggingUpdates)]
unsafe fn wantsPeriodicDraggingUpdates(&self) -> bool;
#[optional]
#[method(updateDraggingItemsForDrag:)]
unsafe fn updateDraggingItemsForDrag(
&self,
sender: Option<&ProtocolObject<dyn NSDraggingInfo>>,
);
}
unsafe impl ProtocolType for dyn NSDraggingDestination {}
);
extern_protocol!(
pub unsafe trait NSDraggingSource: NSObjectProtocol + IsMainThreadOnly {
#[cfg(feature = "AppKit_NSDraggingSession")]
#[method(draggingSession:sourceOperationMaskForDraggingContext:)]
unsafe fn draggingSession_sourceOperationMaskForDraggingContext(
&self,
session: &NSDraggingSession,
context: NSDraggingContext,
) -> NSDragOperation;
#[cfg(feature = "AppKit_NSDraggingSession")]
#[optional]
#[method(draggingSession:willBeginAtPoint:)]
unsafe fn draggingSession_willBeginAtPoint(
&self,
session: &NSDraggingSession,
screen_point: NSPoint,
);
#[cfg(feature = "AppKit_NSDraggingSession")]
#[optional]
#[method(draggingSession:movedToPoint:)]
unsafe fn draggingSession_movedToPoint(
&self,
session: &NSDraggingSession,
screen_point: NSPoint,
);
#[cfg(feature = "AppKit_NSDraggingSession")]
#[optional]
#[method(draggingSession:endedAtPoint:operation:)]
unsafe fn draggingSession_endedAtPoint_operation(
&self,
session: &NSDraggingSession,
screen_point: NSPoint,
operation: NSDragOperation,
);
#[cfg(feature = "AppKit_NSDraggingSession")]
#[optional]
#[method(ignoreModifierKeysForDraggingSession:)]
unsafe fn ignoreModifierKeysForDraggingSession(&self, session: &NSDraggingSession) -> bool;
}
unsafe impl ProtocolType for dyn NSDraggingSource {}
);
ns_options!(
#[underlying(NSUInteger)]
pub enum NSSpringLoadingOptions {
NSSpringLoadingDisabled = 0,
NSSpringLoadingEnabled = 1 << 0,
NSSpringLoadingContinuousActivation = 1 << 1,
NSSpringLoadingNoHover = 1 << 3,
}
);
extern_protocol!(
pub unsafe trait NSSpringLoadingDestination:
NSObjectProtocol + IsMainThreadOnly
{
#[method(springLoadingActivated:draggingInfo:)]
unsafe fn springLoadingActivated_draggingInfo(
&self,
activated: bool,
dragging_info: &ProtocolObject<dyn NSDraggingInfo>,
);
#[method(springLoadingHighlightChanged:)]
unsafe fn springLoadingHighlightChanged(
&self,
dragging_info: &ProtocolObject<dyn NSDraggingInfo>,
);
#[optional]
#[method(springLoadingEntered:)]
unsafe fn springLoadingEntered(
&self,
dragging_info: &ProtocolObject<dyn NSDraggingInfo>,
) -> NSSpringLoadingOptions;
#[optional]
#[method(springLoadingUpdated:)]
unsafe fn springLoadingUpdated(
&self,
dragging_info: &ProtocolObject<dyn NSDraggingInfo>,
) -> NSSpringLoadingOptions;
#[optional]
#[method(springLoadingExited:)]
unsafe fn springLoadingExited(&self, dragging_info: &ProtocolObject<dyn NSDraggingInfo>);
#[optional]
#[method(draggingEnded:)]
unsafe fn draggingEnded(&self, dragging_info: &ProtocolObject<dyn NSDraggingInfo>);
}
unsafe impl ProtocolType for dyn NSSpringLoadingDestination {}
);