ContextOutlineView.m
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:1k
源码类别:
OpenGL
开发平台:
Visual C++
- #import "ContextOutlineView.h"
- @implementation ContextOutlineView
- - (NSMenu*)menuForEvent:(NSEvent*)theEvent
- {
- int rowIndex = [self rowAtPoint:[self convertPoint:[theEvent locationInWindow] fromView:nil]];
- if (rowIndex >= 0)
- {
- id item;
- [self abortEditing];
- item = [self itemAtRow:rowIndex];
- if (item != nil) {
- id delegate = [self delegate];
- if ([delegate respondsToSelector:@selector(outlineView:shouldSelectItem:)] && [delegate outlineView:self shouldSelectItem:item])
- [self selectRow:rowIndex byExtendingSelection:NO];
- if ([delegate respondsToSelector:@selector(outlineView:contextMenuForItem:)])
- {
- SEL sel = @selector(outlineView:contextMenuForItem:);
- NSInvocation *invoc = [NSInvocation invocationWithMethodSignature:
- [delegate methodSignatureForSelector: sel]];
- if (invoc)
- {
- NSMenu *result;
- [invoc setSelector: sel];
- [invoc setArgument: &self atIndex: 2];
- [invoc setArgument: &item atIndex: 3];
- [invoc invokeWithTarget: delegate];
- [invoc getReturnValue: &result];
- return result;
- }
- }
- }
- } else {
- [self deselectAll:self];
- return [self menu];
- }
- return nil;
- }
- @end