objc2_app_kit/generated/
NSOutlineView.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::*;
6#[cfg(feature = "objc2-core-foundation")]
7use objc2_core_foundation::*;
8use objc2_foundation::*;
9
10use crate::*;
11
12/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineviewdroponitemindex?language=objc)
13pub const NSOutlineViewDropOnItemIndex: c_int = -1;
14
15extern_class!(
16    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineview?language=objc)
17    #[unsafe(super(NSTableView, NSControl, NSView, NSResponder, NSObject))]
18    #[derive(Debug, PartialEq, Eq, Hash)]
19    #[cfg(all(
20        feature = "NSControl",
21        feature = "NSResponder",
22        feature = "NSTableView",
23        feature = "NSView"
24    ))]
25    pub struct NSOutlineView;
26);
27
28#[cfg(all(
29    feature = "NSAccessibilityProtocols",
30    feature = "NSControl",
31    feature = "NSResponder",
32    feature = "NSTableView",
33    feature = "NSView"
34))]
35extern_conformance!(
36    unsafe impl NSAccessibility for NSOutlineView {}
37);
38
39#[cfg(all(
40    feature = "NSAccessibilityProtocols",
41    feature = "NSControl",
42    feature = "NSResponder",
43    feature = "NSTableView",
44    feature = "NSView"
45))]
46extern_conformance!(
47    unsafe impl NSAccessibilityElementProtocol for NSOutlineView {}
48);
49
50#[cfg(all(
51    feature = "NSAccessibilityProtocols",
52    feature = "NSControl",
53    feature = "NSResponder",
54    feature = "NSTableView",
55    feature = "NSView"
56))]
57extern_conformance!(
58    unsafe impl NSAccessibilityGroup for NSOutlineView {}
59);
60
61#[cfg(all(
62    feature = "NSAccessibilityProtocols",
63    feature = "NSControl",
64    feature = "NSResponder",
65    feature = "NSTableView",
66    feature = "NSView"
67))]
68extern_conformance!(
69    unsafe impl NSAccessibilityOutline for NSOutlineView {}
70);
71
72#[cfg(all(
73    feature = "NSAccessibilityProtocols",
74    feature = "NSControl",
75    feature = "NSResponder",
76    feature = "NSTableView",
77    feature = "NSView"
78))]
79extern_conformance!(
80    unsafe impl NSAccessibilityTable for NSOutlineView {}
81);
82
83#[cfg(all(
84    feature = "NSAnimation",
85    feature = "NSControl",
86    feature = "NSResponder",
87    feature = "NSTableView",
88    feature = "NSView"
89))]
90extern_conformance!(
91    unsafe impl NSAnimatablePropertyContainer for NSOutlineView {}
92);
93
94#[cfg(all(
95    feature = "NSAppearance",
96    feature = "NSControl",
97    feature = "NSResponder",
98    feature = "NSTableView",
99    feature = "NSView"
100))]
101extern_conformance!(
102    unsafe impl NSAppearanceCustomization for NSOutlineView {}
103);
104
105#[cfg(all(
106    feature = "NSControl",
107    feature = "NSResponder",
108    feature = "NSTableView",
109    feature = "NSView"
110))]
111extern_conformance!(
112    unsafe impl NSCoding for NSOutlineView {}
113);
114
115#[cfg(all(
116    feature = "NSControl",
117    feature = "NSDragging",
118    feature = "NSResponder",
119    feature = "NSTableView",
120    feature = "NSView"
121))]
122extern_conformance!(
123    unsafe impl NSDraggingDestination for NSOutlineView {}
124);
125
126#[cfg(all(
127    feature = "NSControl",
128    feature = "NSDragging",
129    feature = "NSResponder",
130    feature = "NSTableView",
131    feature = "NSView"
132))]
133extern_conformance!(
134    unsafe impl NSDraggingSource for NSOutlineView {}
135);
136
137#[cfg(all(
138    feature = "NSControl",
139    feature = "NSResponder",
140    feature = "NSTableView",
141    feature = "NSView"
142))]
143extern_conformance!(
144    unsafe impl NSObjectProtocol for NSOutlineView {}
145);
146
147#[cfg(all(
148    feature = "NSControl",
149    feature = "NSResponder",
150    feature = "NSTableView",
151    feature = "NSText",
152    feature = "NSView"
153))]
154extern_conformance!(
155    unsafe impl NSTextDelegate for NSOutlineView {}
156);
157
158#[cfg(all(
159    feature = "NSControl",
160    feature = "NSResponder",
161    feature = "NSTableView",
162    feature = "NSText",
163    feature = "NSTextView",
164    feature = "NSView"
165))]
166extern_conformance!(
167    unsafe impl NSTextViewDelegate for NSOutlineView {}
168);
169
170#[cfg(all(
171    feature = "NSControl",
172    feature = "NSResponder",
173    feature = "NSTableView",
174    feature = "NSUserInterfaceItemIdentification",
175    feature = "NSView"
176))]
177extern_conformance!(
178    unsafe impl NSUserInterfaceItemIdentification for NSOutlineView {}
179);
180
181#[cfg(all(
182    feature = "NSControl",
183    feature = "NSResponder",
184    feature = "NSTableView",
185    feature = "NSUserInterfaceValidation",
186    feature = "NSView"
187))]
188extern_conformance!(
189    unsafe impl NSUserInterfaceValidations for NSOutlineView {}
190);
191
192#[cfg(all(
193    feature = "NSControl",
194    feature = "NSResponder",
195    feature = "NSTableView",
196    feature = "NSView"
197))]
198impl NSOutlineView {
199    extern_methods!(
200        #[unsafe(method(delegate))]
201        #[unsafe(method_family = none)]
202        pub unsafe fn delegate(
203            &self,
204        ) -> Option<Retained<ProtocolObject<dyn NSOutlineViewDelegate>>>;
205
206        /// Setter for [`delegate`][Self::delegate].
207        ///
208        /// This is a [weak property][objc2::topics::weak_property].
209        #[unsafe(method(setDelegate:))]
210        #[unsafe(method_family = none)]
211        pub unsafe fn setDelegate(
212            &self,
213            delegate: Option<&ProtocolObject<dyn NSOutlineViewDelegate>>,
214        );
215
216        #[unsafe(method(dataSource))]
217        #[unsafe(method_family = none)]
218        pub unsafe fn dataSource(
219            &self,
220        ) -> Option<Retained<ProtocolObject<dyn NSOutlineViewDataSource>>>;
221
222        /// Setter for [`dataSource`][Self::dataSource].
223        ///
224        /// This is a [weak property][objc2::topics::weak_property].
225        #[unsafe(method(setDataSource:))]
226        #[unsafe(method_family = none)]
227        pub unsafe fn setDataSource(
228            &self,
229            data_source: Option<&ProtocolObject<dyn NSOutlineViewDataSource>>,
230        );
231
232        #[cfg(feature = "NSTableColumn")]
233        /// # Safety
234        ///
235        /// This is not retained internally, you must ensure the object is still alive.
236        #[unsafe(method(outlineTableColumn))]
237        #[unsafe(method_family = none)]
238        pub unsafe fn outlineTableColumn(&self) -> Option<Retained<NSTableColumn>>;
239
240        #[cfg(feature = "NSTableColumn")]
241        /// Setter for [`outlineTableColumn`][Self::outlineTableColumn].
242        ///
243        /// # Safety
244        ///
245        /// This is unretained, you must ensure the object is kept alive while in use.
246        #[unsafe(method(setOutlineTableColumn:))]
247        #[unsafe(method_family = none)]
248        pub unsafe fn setOutlineTableColumn(&self, outline_table_column: Option<&NSTableColumn>);
249
250        /// # Safety
251        ///
252        /// `item` should be of the correct type.
253        #[unsafe(method(isExpandable:))]
254        #[unsafe(method_family = none)]
255        pub unsafe fn isExpandable(&self, item: Option<&AnyObject>) -> bool;
256
257        /// # Safety
258        ///
259        /// `item` should be of the correct type.
260        #[unsafe(method(numberOfChildrenOfItem:))]
261        #[unsafe(method_family = none)]
262        pub unsafe fn numberOfChildrenOfItem(&self, item: Option<&AnyObject>) -> NSInteger;
263
264        /// # Safety
265        ///
266        /// `item` should be of the correct type.
267        #[unsafe(method(child:ofItem:))]
268        #[unsafe(method_family = none)]
269        pub unsafe fn child_ofItem(
270            &self,
271            index: NSInteger,
272            item: Option<&AnyObject>,
273        ) -> Option<Retained<AnyObject>>;
274
275        /// # Safety
276        ///
277        /// `item` should be of the correct type.
278        #[unsafe(method(expandItem:expandChildren:))]
279        #[unsafe(method_family = none)]
280        pub unsafe fn expandItem_expandChildren(
281            &self,
282            item: Option<&AnyObject>,
283            expand_children: bool,
284        );
285
286        /// # Safety
287        ///
288        /// `item` should be of the correct type.
289        #[unsafe(method(expandItem:))]
290        #[unsafe(method_family = none)]
291        pub unsafe fn expandItem(&self, item: Option<&AnyObject>);
292
293        /// # Safety
294        ///
295        /// `item` should be of the correct type.
296        #[unsafe(method(collapseItem:collapseChildren:))]
297        #[unsafe(method_family = none)]
298        pub unsafe fn collapseItem_collapseChildren(
299            &self,
300            item: Option<&AnyObject>,
301            collapse_children: bool,
302        );
303
304        /// # Safety
305        ///
306        /// `item` should be of the correct type.
307        #[unsafe(method(collapseItem:))]
308        #[unsafe(method_family = none)]
309        pub unsafe fn collapseItem(&self, item: Option<&AnyObject>);
310
311        /// # Safety
312        ///
313        /// `item` should be of the correct type.
314        #[unsafe(method(reloadItem:reloadChildren:))]
315        #[unsafe(method_family = none)]
316        pub unsafe fn reloadItem_reloadChildren(
317            &self,
318            item: Option<&AnyObject>,
319            reload_children: bool,
320        );
321
322        /// # Safety
323        ///
324        /// `item` should be of the correct type.
325        #[unsafe(method(reloadItem:))]
326        #[unsafe(method_family = none)]
327        pub unsafe fn reloadItem(&self, item: Option<&AnyObject>);
328
329        /// # Safety
330        ///
331        /// `item` should be of the correct type.
332        #[unsafe(method(parentForItem:))]
333        #[unsafe(method_family = none)]
334        pub unsafe fn parentForItem(&self, item: Option<&AnyObject>)
335            -> Option<Retained<AnyObject>>;
336
337        /// # Safety
338        ///
339        /// `item` should be of the correct type.
340        #[unsafe(method(childIndexForItem:))]
341        #[unsafe(method_family = none)]
342        pub unsafe fn childIndexForItem(&self, item: &AnyObject) -> NSInteger;
343
344        #[unsafe(method(itemAtRow:))]
345        #[unsafe(method_family = none)]
346        pub fn itemAtRow(&self, row: NSInteger) -> Option<Retained<AnyObject>>;
347
348        /// # Safety
349        ///
350        /// `item` should be of the correct type.
351        #[unsafe(method(rowForItem:))]
352        #[unsafe(method_family = none)]
353        pub unsafe fn rowForItem(&self, item: Option<&AnyObject>) -> NSInteger;
354
355        /// # Safety
356        ///
357        /// `item` should be of the correct type.
358        #[unsafe(method(levelForItem:))]
359        #[unsafe(method_family = none)]
360        pub unsafe fn levelForItem(&self, item: Option<&AnyObject>) -> NSInteger;
361
362        #[unsafe(method(levelForRow:))]
363        #[unsafe(method_family = none)]
364        pub fn levelForRow(&self, row: NSInteger) -> NSInteger;
365
366        /// # Safety
367        ///
368        /// `item` should be of the correct type.
369        #[unsafe(method(isItemExpanded:))]
370        #[unsafe(method_family = none)]
371        pub unsafe fn isItemExpanded(&self, item: Option<&AnyObject>) -> bool;
372
373        #[cfg(feature = "objc2-core-foundation")]
374        #[unsafe(method(indentationPerLevel))]
375        #[unsafe(method_family = none)]
376        pub fn indentationPerLevel(&self) -> CGFloat;
377
378        #[cfg(feature = "objc2-core-foundation")]
379        /// Setter for [`indentationPerLevel`][Self::indentationPerLevel].
380        #[unsafe(method(setIndentationPerLevel:))]
381        #[unsafe(method_family = none)]
382        pub fn setIndentationPerLevel(&self, indentation_per_level: CGFloat);
383
384        #[unsafe(method(indentationMarkerFollowsCell))]
385        #[unsafe(method_family = none)]
386        pub fn indentationMarkerFollowsCell(&self) -> bool;
387
388        /// Setter for [`indentationMarkerFollowsCell`][Self::indentationMarkerFollowsCell].
389        #[unsafe(method(setIndentationMarkerFollowsCell:))]
390        #[unsafe(method_family = none)]
391        pub fn setIndentationMarkerFollowsCell(&self, indentation_marker_follows_cell: bool);
392
393        #[unsafe(method(autoresizesOutlineColumn))]
394        #[unsafe(method_family = none)]
395        pub fn autoresizesOutlineColumn(&self) -> bool;
396
397        /// Setter for [`autoresizesOutlineColumn`][Self::autoresizesOutlineColumn].
398        #[unsafe(method(setAutoresizesOutlineColumn:))]
399        #[unsafe(method_family = none)]
400        pub fn setAutoresizesOutlineColumn(&self, autoresizes_outline_column: bool);
401
402        #[unsafe(method(frameOfOutlineCellAtRow:))]
403        #[unsafe(method_family = none)]
404        pub fn frameOfOutlineCellAtRow(&self, row: NSInteger) -> NSRect;
405
406        /// # Safety
407        ///
408        /// `item` should be of the correct type.
409        #[unsafe(method(setDropItem:dropChildIndex:))]
410        #[unsafe(method_family = none)]
411        pub unsafe fn setDropItem_dropChildIndex(&self, item: Option<&AnyObject>, index: NSInteger);
412
413        #[unsafe(method(shouldCollapseAutoExpandedItemsForDeposited:))]
414        #[unsafe(method_family = none)]
415        pub fn shouldCollapseAutoExpandedItemsForDeposited(&self, deposited: bool) -> bool;
416
417        #[unsafe(method(autosaveExpandedItems))]
418        #[unsafe(method_family = none)]
419        pub fn autosaveExpandedItems(&self) -> bool;
420
421        /// Setter for [`autosaveExpandedItems`][Self::autosaveExpandedItems].
422        #[unsafe(method(setAutosaveExpandedItems:))]
423        #[unsafe(method_family = none)]
424        pub fn setAutosaveExpandedItems(&self, autosave_expanded_items: bool);
425
426        /// # Safety
427        ///
428        /// `parent` should be of the correct type.
429        #[unsafe(method(insertItemsAtIndexes:inParent:withAnimation:))]
430        #[unsafe(method_family = none)]
431        pub unsafe fn insertItemsAtIndexes_inParent_withAnimation(
432            &self,
433            indexes: &NSIndexSet,
434            parent: Option<&AnyObject>,
435            animation_options: NSTableViewAnimationOptions,
436        );
437
438        /// # Safety
439        ///
440        /// `parent` should be of the correct type.
441        #[unsafe(method(removeItemsAtIndexes:inParent:withAnimation:))]
442        #[unsafe(method_family = none)]
443        pub unsafe fn removeItemsAtIndexes_inParent_withAnimation(
444            &self,
445            indexes: &NSIndexSet,
446            parent: Option<&AnyObject>,
447            animation_options: NSTableViewAnimationOptions,
448        );
449
450        /// # Safety
451        ///
452        /// - `old_parent` should be of the correct type.
453        /// - `new_parent` should be of the correct type.
454        #[unsafe(method(moveItemAtIndex:inParent:toIndex:inParent:))]
455        #[unsafe(method_family = none)]
456        pub unsafe fn moveItemAtIndex_inParent_toIndex_inParent(
457            &self,
458            from_index: NSInteger,
459            old_parent: Option<&AnyObject>,
460            to_index: NSInteger,
461            new_parent: Option<&AnyObject>,
462        );
463
464        #[unsafe(method(insertRowsAtIndexes:withAnimation:))]
465        #[unsafe(method_family = none)]
466        pub unsafe fn insertRowsAtIndexes_withAnimation(
467            &self,
468            indexes: &NSIndexSet,
469            animation_options: NSTableViewAnimationOptions,
470        );
471
472        #[unsafe(method(removeRowsAtIndexes:withAnimation:))]
473        #[unsafe(method_family = none)]
474        pub unsafe fn removeRowsAtIndexes_withAnimation(
475            &self,
476            indexes: &NSIndexSet,
477            animation_options: NSTableViewAnimationOptions,
478        );
479
480        #[unsafe(method(moveRowAtIndex:toIndex:))]
481        #[unsafe(method_family = none)]
482        pub unsafe fn moveRowAtIndex_toIndex(&self, old_index: NSInteger, new_index: NSInteger);
483
484        #[cfg(feature = "NSUserInterfaceLayout")]
485        #[unsafe(method(userInterfaceLayoutDirection))]
486        #[unsafe(method_family = none)]
487        pub fn userInterfaceLayoutDirection(&self) -> NSUserInterfaceLayoutDirection;
488
489        #[cfg(feature = "NSUserInterfaceLayout")]
490        /// Setter for [`userInterfaceLayoutDirection`][Self::userInterfaceLayoutDirection].
491        #[unsafe(method(setUserInterfaceLayoutDirection:))]
492        #[unsafe(method_family = none)]
493        pub fn setUserInterfaceLayoutDirection(
494            &self,
495            user_interface_layout_direction: NSUserInterfaceLayoutDirection,
496        );
497
498        #[unsafe(method(stronglyReferencesItems))]
499        #[unsafe(method_family = none)]
500        pub fn stronglyReferencesItems(&self) -> bool;
501
502        /// Setter for [`stronglyReferencesItems`][Self::stronglyReferencesItems].
503        #[unsafe(method(setStronglyReferencesItems:))]
504        #[unsafe(method_family = none)]
505        pub unsafe fn setStronglyReferencesItems(&self, strongly_references_items: bool);
506    );
507}
508
509/// Methods declared on superclass `NSTableView`.
510#[cfg(all(
511    feature = "NSControl",
512    feature = "NSResponder",
513    feature = "NSTableView",
514    feature = "NSView"
515))]
516impl NSOutlineView {
517    extern_methods!(
518        #[unsafe(method(initWithFrame:))]
519        #[unsafe(method_family = init)]
520        pub fn initWithFrame(this: Allocated<Self>, frame_rect: NSRect) -> Retained<Self>;
521
522        /// # Safety
523        ///
524        /// `coder` possibly has further requirements.
525        #[unsafe(method(initWithCoder:))]
526        #[unsafe(method_family = init)]
527        pub unsafe fn initWithCoder(
528            this: Allocated<Self>,
529            coder: &NSCoder,
530        ) -> Option<Retained<Self>>;
531    );
532}
533
534/// Methods declared on superclass `NSResponder`.
535#[cfg(all(
536    feature = "NSControl",
537    feature = "NSResponder",
538    feature = "NSTableView",
539    feature = "NSView"
540))]
541impl NSOutlineView {
542    extern_methods!(
543        #[unsafe(method(init))]
544        #[unsafe(method_family = init)]
545        pub fn init(this: Allocated<Self>) -> Retained<Self>;
546    );
547}
548
549/// Methods declared on superclass `NSObject`.
550#[cfg(all(
551    feature = "NSControl",
552    feature = "NSResponder",
553    feature = "NSTableView",
554    feature = "NSView"
555))]
556impl NSOutlineView {
557    extern_methods!(
558        #[unsafe(method(new))]
559        #[unsafe(method_family = new)]
560        pub fn new(mtm: MainThreadMarker) -> Retained<Self>;
561    );
562}
563
564extern_protocol!(
565    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineviewdatasource?language=objc)
566    pub unsafe trait NSOutlineViewDataSource: NSObjectProtocol {
567        #[cfg(all(
568            feature = "NSControl",
569            feature = "NSResponder",
570            feature = "NSTableView",
571            feature = "NSView"
572        ))]
573        /// # Safety
574        ///
575        /// `item` should be of the correct type.
576        #[optional]
577        #[unsafe(method(outlineView:numberOfChildrenOfItem:))]
578        #[unsafe(method_family = none)]
579        unsafe fn outlineView_numberOfChildrenOfItem(
580            &self,
581            outline_view: &NSOutlineView,
582            item: Option<&AnyObject>,
583        ) -> NSInteger;
584
585        #[cfg(all(
586            feature = "NSControl",
587            feature = "NSResponder",
588            feature = "NSTableView",
589            feature = "NSView"
590        ))]
591        /// # Safety
592        ///
593        /// `item` should be of the correct type.
594        #[optional]
595        #[unsafe(method(outlineView:child:ofItem:))]
596        #[unsafe(method_family = none)]
597        unsafe fn outlineView_child_ofItem(
598            &self,
599            outline_view: &NSOutlineView,
600            index: NSInteger,
601            item: Option<&AnyObject>,
602        ) -> Retained<AnyObject>;
603
604        #[cfg(all(
605            feature = "NSControl",
606            feature = "NSResponder",
607            feature = "NSTableView",
608            feature = "NSView"
609        ))]
610        /// # Safety
611        ///
612        /// `item` should be of the correct type.
613        #[optional]
614        #[unsafe(method(outlineView:isItemExpandable:))]
615        #[unsafe(method_family = none)]
616        unsafe fn outlineView_isItemExpandable(
617            &self,
618            outline_view: &NSOutlineView,
619            item: &AnyObject,
620        ) -> bool;
621
622        #[cfg(all(
623            feature = "NSControl",
624            feature = "NSResponder",
625            feature = "NSTableColumn",
626            feature = "NSTableView",
627            feature = "NSView"
628        ))]
629        /// # Safety
630        ///
631        /// `item` should be of the correct type.
632        #[optional]
633        #[unsafe(method(outlineView:objectValueForTableColumn:byItem:))]
634        #[unsafe(method_family = none)]
635        unsafe fn outlineView_objectValueForTableColumn_byItem(
636            &self,
637            outline_view: &NSOutlineView,
638            table_column: Option<&NSTableColumn>,
639            item: Option<&AnyObject>,
640        ) -> Option<Retained<AnyObject>>;
641
642        #[cfg(all(
643            feature = "NSControl",
644            feature = "NSResponder",
645            feature = "NSTableColumn",
646            feature = "NSTableView",
647            feature = "NSView"
648        ))]
649        /// # Safety
650        ///
651        /// - `object` should be of the correct type.
652        /// - `item` should be of the correct type.
653        #[optional]
654        #[unsafe(method(outlineView:setObjectValue:forTableColumn:byItem:))]
655        #[unsafe(method_family = none)]
656        unsafe fn outlineView_setObjectValue_forTableColumn_byItem(
657            &self,
658            outline_view: &NSOutlineView,
659            object: Option<&AnyObject>,
660            table_column: Option<&NSTableColumn>,
661            item: Option<&AnyObject>,
662        );
663
664        #[cfg(all(
665            feature = "NSControl",
666            feature = "NSResponder",
667            feature = "NSTableView",
668            feature = "NSView"
669        ))]
670        /// # Safety
671        ///
672        /// `object` should be of the correct type.
673        #[optional]
674        #[unsafe(method(outlineView:itemForPersistentObject:))]
675        #[unsafe(method_family = none)]
676        unsafe fn outlineView_itemForPersistentObject(
677            &self,
678            outline_view: &NSOutlineView,
679            object: &AnyObject,
680        ) -> Option<Retained<AnyObject>>;
681
682        #[cfg(all(
683            feature = "NSControl",
684            feature = "NSResponder",
685            feature = "NSTableView",
686            feature = "NSView"
687        ))]
688        /// # Safety
689        ///
690        /// `item` should be of the correct type.
691        #[optional]
692        #[unsafe(method(outlineView:persistentObjectForItem:))]
693        #[unsafe(method_family = none)]
694        unsafe fn outlineView_persistentObjectForItem(
695            &self,
696            outline_view: &NSOutlineView,
697            item: Option<&AnyObject>,
698        ) -> Option<Retained<AnyObject>>;
699
700        #[cfg(all(
701            feature = "NSControl",
702            feature = "NSResponder",
703            feature = "NSTableView",
704            feature = "NSView"
705        ))]
706        #[optional]
707        #[unsafe(method(outlineView:sortDescriptorsDidChange:))]
708        #[unsafe(method_family = none)]
709        fn outlineView_sortDescriptorsDidChange(
710            &self,
711            outline_view: &NSOutlineView,
712            old_descriptors: &NSArray<NSSortDescriptor>,
713        );
714
715        #[cfg(all(
716            feature = "NSControl",
717            feature = "NSPasteboard",
718            feature = "NSResponder",
719            feature = "NSTableView",
720            feature = "NSView"
721        ))]
722        /// # Safety
723        ///
724        /// `item` should be of the correct type.
725        #[optional]
726        #[unsafe(method(outlineView:pasteboardWriterForItem:))]
727        #[unsafe(method_family = none)]
728        unsafe fn outlineView_pasteboardWriterForItem(
729            &self,
730            outline_view: &NSOutlineView,
731            item: &AnyObject,
732        ) -> Option<Retained<ProtocolObject<dyn NSPasteboardWriting>>>;
733
734        #[cfg(all(
735            feature = "NSControl",
736            feature = "NSDraggingSession",
737            feature = "NSResponder",
738            feature = "NSTableView",
739            feature = "NSView"
740        ))]
741        /// # Safety
742        ///
743        /// `dragged_items` generic should be of the correct type.
744        #[optional]
745        #[unsafe(method(outlineView:draggingSession:willBeginAtPoint:forItems:))]
746        #[unsafe(method_family = none)]
747        unsafe fn outlineView_draggingSession_willBeginAtPoint_forItems(
748            &self,
749            outline_view: &NSOutlineView,
750            session: &NSDraggingSession,
751            screen_point: NSPoint,
752            dragged_items: &NSArray,
753        );
754
755        #[cfg(all(
756            feature = "NSControl",
757            feature = "NSDragging",
758            feature = "NSDraggingSession",
759            feature = "NSResponder",
760            feature = "NSTableView",
761            feature = "NSView"
762        ))]
763        #[optional]
764        #[unsafe(method(outlineView:draggingSession:endedAtPoint:operation:))]
765        #[unsafe(method_family = none)]
766        fn outlineView_draggingSession_endedAtPoint_operation(
767            &self,
768            outline_view: &NSOutlineView,
769            session: &NSDraggingSession,
770            screen_point: NSPoint,
771            operation: NSDragOperation,
772        );
773
774        #[cfg(all(
775            feature = "NSControl",
776            feature = "NSPasteboard",
777            feature = "NSResponder",
778            feature = "NSTableView",
779            feature = "NSView"
780        ))]
781        /// # Safety
782        ///
783        /// `items` generic should be of the correct type.
784        #[deprecated = "Use -outlineView:pasteboardWriterForItem: instead"]
785        #[optional]
786        #[unsafe(method(outlineView:writeItems:toPasteboard:))]
787        #[unsafe(method_family = none)]
788        unsafe fn outlineView_writeItems_toPasteboard(
789            &self,
790            outline_view: &NSOutlineView,
791            items: &NSArray,
792            pasteboard: &NSPasteboard,
793        ) -> bool;
794
795        #[cfg(all(
796            feature = "NSControl",
797            feature = "NSDragging",
798            feature = "NSResponder",
799            feature = "NSTableView",
800            feature = "NSView"
801        ))]
802        #[optional]
803        #[unsafe(method(outlineView:updateDraggingItemsForDrag:))]
804        #[unsafe(method_family = none)]
805        fn outlineView_updateDraggingItemsForDrag(
806            &self,
807            outline_view: &NSOutlineView,
808            dragging_info: &ProtocolObject<dyn NSDraggingInfo>,
809        );
810
811        #[cfg(all(
812            feature = "NSControl",
813            feature = "NSDragging",
814            feature = "NSResponder",
815            feature = "NSTableView",
816            feature = "NSView"
817        ))]
818        /// # Safety
819        ///
820        /// `item` should be of the correct type.
821        #[optional]
822        #[unsafe(method(outlineView:validateDrop:proposedItem:proposedChildIndex:))]
823        #[unsafe(method_family = none)]
824        unsafe fn outlineView_validateDrop_proposedItem_proposedChildIndex(
825            &self,
826            outline_view: &NSOutlineView,
827            info: &ProtocolObject<dyn NSDraggingInfo>,
828            item: Option<&AnyObject>,
829            index: NSInteger,
830        ) -> NSDragOperation;
831
832        #[cfg(all(
833            feature = "NSControl",
834            feature = "NSDragging",
835            feature = "NSResponder",
836            feature = "NSTableView",
837            feature = "NSView"
838        ))]
839        /// # Safety
840        ///
841        /// `item` should be of the correct type.
842        #[optional]
843        #[unsafe(method(outlineView:acceptDrop:item:childIndex:))]
844        #[unsafe(method_family = none)]
845        unsafe fn outlineView_acceptDrop_item_childIndex(
846            &self,
847            outline_view: &NSOutlineView,
848            info: &ProtocolObject<dyn NSDraggingInfo>,
849            item: Option<&AnyObject>,
850            index: NSInteger,
851        ) -> bool;
852
853        #[cfg(all(
854            feature = "NSControl",
855            feature = "NSResponder",
856            feature = "NSTableView",
857            feature = "NSView"
858        ))]
859        /// # Safety
860        ///
861        /// `items` generic should be of the correct type.
862        #[deprecated = "Use NSFilePromiseReceiver objects instead"]
863        #[optional]
864        #[unsafe(method(outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:))]
865        #[unsafe(method_family = none)]
866        unsafe fn outlineView_namesOfPromisedFilesDroppedAtDestination_forDraggedItems(
867            &self,
868            outline_view: &NSOutlineView,
869            drop_destination: &NSURL,
870            items: &NSArray,
871        ) -> Retained<NSArray<NSString>>;
872    }
873);
874
875extern_protocol!(
876    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineviewdelegate?language=objc)
877    #[cfg(feature = "NSControl")]
878    pub unsafe trait NSOutlineViewDelegate:
879        NSControlTextEditingDelegate + MainThreadOnly
880    {
881        #[cfg(all(
882            feature = "NSResponder",
883            feature = "NSTableColumn",
884            feature = "NSTableView",
885            feature = "NSView"
886        ))]
887        /// # Safety
888        ///
889        /// `item` should be of the correct type.
890        #[optional]
891        #[unsafe(method(outlineView:viewForTableColumn:item:))]
892        #[unsafe(method_family = none)]
893        unsafe fn outlineView_viewForTableColumn_item(
894            &self,
895            outline_view: &NSOutlineView,
896            table_column: Option<&NSTableColumn>,
897            item: &AnyObject,
898        ) -> Option<Retained<NSView>>;
899
900        #[cfg(all(
901            feature = "NSResponder",
902            feature = "NSTableRowView",
903            feature = "NSTableView",
904            feature = "NSView"
905        ))]
906        /// # Safety
907        ///
908        /// `item` should be of the correct type.
909        #[optional]
910        #[unsafe(method(outlineView:rowViewForItem:))]
911        #[unsafe(method_family = none)]
912        unsafe fn outlineView_rowViewForItem(
913            &self,
914            outline_view: &NSOutlineView,
915            item: &AnyObject,
916        ) -> Option<Retained<NSTableRowView>>;
917
918        #[cfg(all(
919            feature = "NSResponder",
920            feature = "NSTableRowView",
921            feature = "NSTableView",
922            feature = "NSView"
923        ))]
924        #[optional]
925        #[unsafe(method(outlineView:didAddRowView:forRow:))]
926        #[unsafe(method_family = none)]
927        fn outlineView_didAddRowView_forRow(
928            &self,
929            outline_view: &NSOutlineView,
930            row_view: &NSTableRowView,
931            row: NSInteger,
932        );
933
934        #[cfg(all(
935            feature = "NSResponder",
936            feature = "NSTableRowView",
937            feature = "NSTableView",
938            feature = "NSView"
939        ))]
940        #[optional]
941        #[unsafe(method(outlineView:didRemoveRowView:forRow:))]
942        #[unsafe(method_family = none)]
943        fn outlineView_didRemoveRowView_forRow(
944            &self,
945            outline_view: &NSOutlineView,
946            row_view: &NSTableRowView,
947            row: NSInteger,
948        );
949
950        #[cfg(all(
951            feature = "NSResponder",
952            feature = "NSTableColumn",
953            feature = "NSTableView",
954            feature = "NSView"
955        ))]
956        /// # Safety
957        ///
958        /// - `cell` should be of the correct type.
959        /// - `item` should be of the correct type.
960        #[optional]
961        #[unsafe(method(outlineView:willDisplayCell:forTableColumn:item:))]
962        #[unsafe(method_family = none)]
963        unsafe fn outlineView_willDisplayCell_forTableColumn_item(
964            &self,
965            outline_view: &NSOutlineView,
966            cell: &AnyObject,
967            table_column: Option<&NSTableColumn>,
968            item: &AnyObject,
969        );
970
971        #[cfg(all(
972            feature = "NSResponder",
973            feature = "NSTableColumn",
974            feature = "NSTableView",
975            feature = "NSView"
976        ))]
977        /// # Safety
978        ///
979        /// `item` should be of the correct type.
980        #[optional]
981        #[unsafe(method(outlineView:shouldEditTableColumn:item:))]
982        #[unsafe(method_family = none)]
983        unsafe fn outlineView_shouldEditTableColumn_item(
984            &self,
985            outline_view: &NSOutlineView,
986            table_column: Option<&NSTableColumn>,
987            item: &AnyObject,
988        ) -> bool;
989
990        #[cfg(all(feature = "NSResponder", feature = "NSTableView", feature = "NSView"))]
991        #[optional]
992        #[unsafe(method(selectionShouldChangeInOutlineView:))]
993        #[unsafe(method_family = none)]
994        fn selectionShouldChangeInOutlineView(&self, outline_view: &NSOutlineView) -> bool;
995
996        #[cfg(all(feature = "NSResponder", feature = "NSTableView", feature = "NSView"))]
997        /// # Safety
998        ///
999        /// `item` should be of the correct type.
1000        #[optional]
1001        #[unsafe(method(outlineView:shouldSelectItem:))]
1002        #[unsafe(method_family = none)]
1003        unsafe fn outlineView_shouldSelectItem(
1004            &self,
1005            outline_view: &NSOutlineView,
1006            item: &AnyObject,
1007        ) -> bool;
1008
1009        #[cfg(all(feature = "NSResponder", feature = "NSTableView", feature = "NSView"))]
1010        #[optional]
1011        #[unsafe(method(outlineView:selectionIndexesForProposedSelection:))]
1012        #[unsafe(method_family = none)]
1013        fn outlineView_selectionIndexesForProposedSelection(
1014            &self,
1015            outline_view: &NSOutlineView,
1016            proposed_selection_indexes: &NSIndexSet,
1017        ) -> Retained<NSIndexSet>;
1018
1019        #[cfg(all(
1020            feature = "NSResponder",
1021            feature = "NSTableColumn",
1022            feature = "NSTableView",
1023            feature = "NSView"
1024        ))]
1025        #[optional]
1026        #[unsafe(method(outlineView:shouldSelectTableColumn:))]
1027        #[unsafe(method_family = none)]
1028        fn outlineView_shouldSelectTableColumn(
1029            &self,
1030            outline_view: &NSOutlineView,
1031            table_column: Option<&NSTableColumn>,
1032        ) -> bool;
1033
1034        #[cfg(all(
1035            feature = "NSResponder",
1036            feature = "NSTableColumn",
1037            feature = "NSTableView",
1038            feature = "NSView"
1039        ))]
1040        #[optional]
1041        #[unsafe(method(outlineView:mouseDownInHeaderOfTableColumn:))]
1042        #[unsafe(method_family = none)]
1043        fn outlineView_mouseDownInHeaderOfTableColumn(
1044            &self,
1045            outline_view: &NSOutlineView,
1046            table_column: &NSTableColumn,
1047        );
1048
1049        #[cfg(all(
1050            feature = "NSResponder",
1051            feature = "NSTableColumn",
1052            feature = "NSTableView",
1053            feature = "NSView"
1054        ))]
1055        #[optional]
1056        #[unsafe(method(outlineView:didClickTableColumn:))]
1057        #[unsafe(method_family = none)]
1058        fn outlineView_didClickTableColumn(
1059            &self,
1060            outline_view: &NSOutlineView,
1061            table_column: &NSTableColumn,
1062        );
1063
1064        #[cfg(all(
1065            feature = "NSResponder",
1066            feature = "NSTableColumn",
1067            feature = "NSTableView",
1068            feature = "NSView"
1069        ))]
1070        #[optional]
1071        #[unsafe(method(outlineView:didDragTableColumn:))]
1072        #[unsafe(method_family = none)]
1073        fn outlineView_didDragTableColumn(
1074            &self,
1075            outline_view: &NSOutlineView,
1076            table_column: &NSTableColumn,
1077        );
1078
1079        #[cfg(all(
1080            feature = "NSCell",
1081            feature = "NSResponder",
1082            feature = "NSTableColumn",
1083            feature = "NSTableView",
1084            feature = "NSView"
1085        ))]
1086        /// # Safety
1087        ///
1088        /// - `rect` must be a valid pointer.
1089        /// - `item` should be of the correct type.
1090        #[optional]
1091        #[unsafe(method(outlineView:toolTipForCell:rect:tableColumn:item:mouseLocation:))]
1092        #[unsafe(method_family = none)]
1093        unsafe fn outlineView_toolTipForCell_rect_tableColumn_item_mouseLocation(
1094            &self,
1095            outline_view: &NSOutlineView,
1096            cell: &NSCell,
1097            rect: NSRectPointer,
1098            table_column: Option<&NSTableColumn>,
1099            item: &AnyObject,
1100            mouse_location: NSPoint,
1101        ) -> Retained<NSString>;
1102
1103        #[cfg(all(
1104            feature = "NSResponder",
1105            feature = "NSTableView",
1106            feature = "NSView",
1107            feature = "objc2-core-foundation"
1108        ))]
1109        /// # Safety
1110        ///
1111        /// `item` should be of the correct type.
1112        #[optional]
1113        #[unsafe(method(outlineView:heightOfRowByItem:))]
1114        #[unsafe(method_family = none)]
1115        unsafe fn outlineView_heightOfRowByItem(
1116            &self,
1117            outline_view: &NSOutlineView,
1118            item: &AnyObject,
1119        ) -> CGFloat;
1120
1121        #[cfg(all(
1122            feature = "NSResponder",
1123            feature = "NSTableView",
1124            feature = "NSTintConfiguration",
1125            feature = "NSView"
1126        ))]
1127        /// # Safety
1128        ///
1129        /// `item` should be of the correct type.
1130        #[optional]
1131        #[unsafe(method(outlineView:tintConfigurationForItem:))]
1132        #[unsafe(method_family = none)]
1133        unsafe fn outlineView_tintConfigurationForItem(
1134            &self,
1135            outline_view: &NSOutlineView,
1136            item: &AnyObject,
1137        ) -> Option<Retained<NSTintConfiguration>>;
1138
1139        #[cfg(all(
1140            feature = "NSResponder",
1141            feature = "NSTableColumn",
1142            feature = "NSTableView",
1143            feature = "NSView"
1144        ))]
1145        /// # Safety
1146        ///
1147        /// `item` should be of the correct type.
1148        #[optional]
1149        #[unsafe(method(outlineView:typeSelectStringForTableColumn:item:))]
1150        #[unsafe(method_family = none)]
1151        unsafe fn outlineView_typeSelectStringForTableColumn_item(
1152            &self,
1153            outline_view: &NSOutlineView,
1154            table_column: Option<&NSTableColumn>,
1155            item: &AnyObject,
1156        ) -> Option<Retained<NSString>>;
1157
1158        #[cfg(all(feature = "NSResponder", feature = "NSTableView", feature = "NSView"))]
1159        /// # Safety
1160        ///
1161        /// - `start_item` should be of the correct type.
1162        /// - `end_item` should be of the correct type.
1163        #[optional]
1164        #[unsafe(method(outlineView:nextTypeSelectMatchFromItem:toItem:forString:))]
1165        #[unsafe(method_family = none)]
1166        unsafe fn outlineView_nextTypeSelectMatchFromItem_toItem_forString(
1167            &self,
1168            outline_view: &NSOutlineView,
1169            start_item: &AnyObject,
1170            end_item: &AnyObject,
1171            search_string: &NSString,
1172        ) -> Option<Retained<AnyObject>>;
1173
1174        #[cfg(all(
1175            feature = "NSEvent",
1176            feature = "NSResponder",
1177            feature = "NSTableView",
1178            feature = "NSView"
1179        ))]
1180        #[optional]
1181        #[unsafe(method(outlineView:shouldTypeSelectForEvent:withCurrentSearchString:))]
1182        #[unsafe(method_family = none)]
1183        fn outlineView_shouldTypeSelectForEvent_withCurrentSearchString(
1184            &self,
1185            outline_view: &NSOutlineView,
1186            event: &NSEvent,
1187            search_string: Option<&NSString>,
1188        ) -> bool;
1189
1190        #[cfg(all(
1191            feature = "NSResponder",
1192            feature = "NSTableColumn",
1193            feature = "NSTableView",
1194            feature = "NSView"
1195        ))]
1196        /// # Safety
1197        ///
1198        /// `item` should be of the correct type.
1199        #[optional]
1200        #[unsafe(method(outlineView:shouldShowCellExpansionForTableColumn:item:))]
1201        #[unsafe(method_family = none)]
1202        unsafe fn outlineView_shouldShowCellExpansionForTableColumn_item(
1203            &self,
1204            outline_view: &NSOutlineView,
1205            table_column: Option<&NSTableColumn>,
1206            item: &AnyObject,
1207        ) -> bool;
1208
1209        #[cfg(all(
1210            feature = "NSCell",
1211            feature = "NSResponder",
1212            feature = "NSTableColumn",
1213            feature = "NSTableView",
1214            feature = "NSView"
1215        ))]
1216        /// # Safety
1217        ///
1218        /// `item` should be of the correct type.
1219        #[optional]
1220        #[unsafe(method(outlineView:shouldTrackCell:forTableColumn:item:))]
1221        #[unsafe(method_family = none)]
1222        unsafe fn outlineView_shouldTrackCell_forTableColumn_item(
1223            &self,
1224            outline_view: &NSOutlineView,
1225            cell: &NSCell,
1226            table_column: Option<&NSTableColumn>,
1227            item: &AnyObject,
1228        ) -> bool;
1229
1230        #[cfg(all(
1231            feature = "NSCell",
1232            feature = "NSResponder",
1233            feature = "NSTableColumn",
1234            feature = "NSTableView",
1235            feature = "NSView"
1236        ))]
1237        /// # Safety
1238        ///
1239        /// `item` should be of the correct type.
1240        #[optional]
1241        #[unsafe(method(outlineView:dataCellForTableColumn:item:))]
1242        #[unsafe(method_family = none)]
1243        unsafe fn outlineView_dataCellForTableColumn_item(
1244            &self,
1245            outline_view: &NSOutlineView,
1246            table_column: Option<&NSTableColumn>,
1247            item: &AnyObject,
1248        ) -> Option<Retained<NSCell>>;
1249
1250        #[cfg(all(feature = "NSResponder", feature = "NSTableView", feature = "NSView"))]
1251        /// # Safety
1252        ///
1253        /// `item` should be of the correct type.
1254        #[optional]
1255        #[unsafe(method(outlineView:isGroupItem:))]
1256        #[unsafe(method_family = none)]
1257        unsafe fn outlineView_isGroupItem(
1258            &self,
1259            outline_view: &NSOutlineView,
1260            item: &AnyObject,
1261        ) -> bool;
1262
1263        #[cfg(all(feature = "NSResponder", feature = "NSTableView", feature = "NSView"))]
1264        /// # Safety
1265        ///
1266        /// `item` should be of the correct type.
1267        #[optional]
1268        #[unsafe(method(outlineView:shouldExpandItem:))]
1269        #[unsafe(method_family = none)]
1270        unsafe fn outlineView_shouldExpandItem(
1271            &self,
1272            outline_view: &NSOutlineView,
1273            item: &AnyObject,
1274        ) -> bool;
1275
1276        #[cfg(all(feature = "NSResponder", feature = "NSTableView", feature = "NSView"))]
1277        /// # Safety
1278        ///
1279        /// `item` should be of the correct type.
1280        #[optional]
1281        #[unsafe(method(outlineView:shouldCollapseItem:))]
1282        #[unsafe(method_family = none)]
1283        unsafe fn outlineView_shouldCollapseItem(
1284            &self,
1285            outline_view: &NSOutlineView,
1286            item: &AnyObject,
1287        ) -> bool;
1288
1289        #[cfg(all(
1290            feature = "NSResponder",
1291            feature = "NSTableColumn",
1292            feature = "NSTableView",
1293            feature = "NSView"
1294        ))]
1295        /// # Safety
1296        ///
1297        /// - `cell` should be of the correct type.
1298        /// - `item` should be of the correct type.
1299        #[optional]
1300        #[unsafe(method(outlineView:willDisplayOutlineCell:forTableColumn:item:))]
1301        #[unsafe(method_family = none)]
1302        unsafe fn outlineView_willDisplayOutlineCell_forTableColumn_item(
1303            &self,
1304            outline_view: &NSOutlineView,
1305            cell: &AnyObject,
1306            table_column: Option<&NSTableColumn>,
1307            item: &AnyObject,
1308        );
1309
1310        #[cfg(all(
1311            feature = "NSResponder",
1312            feature = "NSTableView",
1313            feature = "NSView",
1314            feature = "objc2-core-foundation"
1315        ))]
1316        #[optional]
1317        #[unsafe(method(outlineView:sizeToFitWidthOfColumn:))]
1318        #[unsafe(method_family = none)]
1319        fn outlineView_sizeToFitWidthOfColumn(
1320            &self,
1321            outline_view: &NSOutlineView,
1322            column: NSInteger,
1323        ) -> CGFloat;
1324
1325        #[cfg(all(feature = "NSResponder", feature = "NSTableView", feature = "NSView"))]
1326        #[optional]
1327        #[unsafe(method(outlineView:shouldReorderColumn:toColumn:))]
1328        #[unsafe(method_family = none)]
1329        fn outlineView_shouldReorderColumn_toColumn(
1330            &self,
1331            outline_view: &NSOutlineView,
1332            column_index: NSInteger,
1333            new_column_index: NSInteger,
1334        ) -> bool;
1335
1336        #[cfg(all(feature = "NSResponder", feature = "NSTableView", feature = "NSView"))]
1337        /// # Safety
1338        ///
1339        /// `item` should be of the correct type.
1340        #[optional]
1341        #[unsafe(method(outlineView:shouldShowOutlineCellForItem:))]
1342        #[unsafe(method_family = none)]
1343        unsafe fn outlineView_shouldShowOutlineCellForItem(
1344            &self,
1345            outline_view: &NSOutlineView,
1346            item: &AnyObject,
1347        ) -> bool;
1348
1349        #[cfg(all(
1350            feature = "NSResponder",
1351            feature = "NSTableColumn",
1352            feature = "NSTableView",
1353            feature = "NSView"
1354        ))]
1355        #[optional]
1356        #[unsafe(method(outlineView:userCanChangeVisibilityOfTableColumn:))]
1357        #[unsafe(method_family = none)]
1358        fn outlineView_userCanChangeVisibilityOfTableColumn(
1359            &self,
1360            outline_view: &NSOutlineView,
1361            column: &NSTableColumn,
1362        ) -> bool;
1363
1364        #[cfg(all(
1365            feature = "NSResponder",
1366            feature = "NSTableColumn",
1367            feature = "NSTableView",
1368            feature = "NSView"
1369        ))]
1370        #[optional]
1371        #[unsafe(method(outlineView:userDidChangeVisibilityOfTableColumns:))]
1372        #[unsafe(method_family = none)]
1373        fn outlineView_userDidChangeVisibilityOfTableColumns(
1374            &self,
1375            outline_view: &NSOutlineView,
1376            columns: &NSArray<NSTableColumn>,
1377        );
1378
1379        #[optional]
1380        #[unsafe(method(outlineViewSelectionDidChange:))]
1381        #[unsafe(method_family = none)]
1382        fn outlineViewSelectionDidChange(&self, notification: &NSNotification);
1383
1384        #[optional]
1385        #[unsafe(method(outlineViewColumnDidMove:))]
1386        #[unsafe(method_family = none)]
1387        fn outlineViewColumnDidMove(&self, notification: &NSNotification);
1388
1389        #[optional]
1390        #[unsafe(method(outlineViewColumnDidResize:))]
1391        #[unsafe(method_family = none)]
1392        fn outlineViewColumnDidResize(&self, notification: &NSNotification);
1393
1394        #[optional]
1395        #[unsafe(method(outlineViewSelectionIsChanging:))]
1396        #[unsafe(method_family = none)]
1397        fn outlineViewSelectionIsChanging(&self, notification: &NSNotification);
1398
1399        #[optional]
1400        #[unsafe(method(outlineViewItemWillExpand:))]
1401        #[unsafe(method_family = none)]
1402        fn outlineViewItemWillExpand(&self, notification: &NSNotification);
1403
1404        #[optional]
1405        #[unsafe(method(outlineViewItemDidExpand:))]
1406        #[unsafe(method_family = none)]
1407        fn outlineViewItemDidExpand(&self, notification: &NSNotification);
1408
1409        #[optional]
1410        #[unsafe(method(outlineViewItemWillCollapse:))]
1411        #[unsafe(method_family = none)]
1412        fn outlineViewItemWillCollapse(&self, notification: &NSNotification);
1413
1414        #[optional]
1415        #[unsafe(method(outlineViewItemDidCollapse:))]
1416        #[unsafe(method_family = none)]
1417        fn outlineViewItemDidCollapse(&self, notification: &NSNotification);
1418    }
1419);
1420
1421extern "C" {
1422    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineviewdisclosurebuttonkey?language=objc)
1423    #[cfg(feature = "NSUserInterfaceItemIdentification")]
1424    pub static NSOutlineViewDisclosureButtonKey: &'static NSUserInterfaceItemIdentifier;
1425}
1426
1427extern "C" {
1428    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineviewshowhidebuttonkey?language=objc)
1429    #[cfg(feature = "NSUserInterfaceItemIdentification")]
1430    pub static NSOutlineViewShowHideButtonKey: &'static NSUserInterfaceItemIdentifier;
1431}
1432
1433extern "C" {
1434    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineviewselectiondidchangenotification?language=objc)
1435    pub static NSOutlineViewSelectionDidChangeNotification: &'static NSNotificationName;
1436}
1437
1438extern "C" {
1439    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineviewcolumndidmovenotification?language=objc)
1440    pub static NSOutlineViewColumnDidMoveNotification: &'static NSNotificationName;
1441}
1442
1443extern "C" {
1444    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineviewcolumndidresizenotification?language=objc)
1445    pub static NSOutlineViewColumnDidResizeNotification: &'static NSNotificationName;
1446}
1447
1448extern "C" {
1449    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineviewselectionischangingnotification?language=objc)
1450    pub static NSOutlineViewSelectionIsChangingNotification: &'static NSNotificationName;
1451}
1452
1453extern "C" {
1454    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineviewitemwillexpandnotification?language=objc)
1455    pub static NSOutlineViewItemWillExpandNotification: &'static NSNotificationName;
1456}
1457
1458extern "C" {
1459    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineviewitemdidexpandnotification?language=objc)
1460    pub static NSOutlineViewItemDidExpandNotification: &'static NSNotificationName;
1461}
1462
1463extern "C" {
1464    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineviewitemwillcollapsenotification?language=objc)
1465    pub static NSOutlineViewItemWillCollapseNotification: &'static NSNotificationName;
1466}
1467
1468extern "C" {
1469    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsoutlineviewitemdidcollapsenotification?language=objc)
1470    pub static NSOutlineViewItemDidCollapseNotification: &'static NSNotificationName;
1471}