diff options
Diffstat (limited to 'cocoa/ScintillaView.mm')
-rw-r--r-- | cocoa/ScintillaView.mm | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/cocoa/ScintillaView.mm b/cocoa/ScintillaView.mm index 7000d96e3..ab0c4375b 100644 --- a/cocoa/ScintillaView.mm +++ b/cocoa/ScintillaView.mm @@ -116,6 +116,21 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor) } } +/** + * Called by the framework if it wants to show a context menu for the margin. + */ +- (NSMenu*) menuForEvent: (NSEvent*) theEvent +{ + NSMenu *menu = [owner menuForEvent: theEvent]; + if (menu) { + return menu; + } else if (owner.backend->ShouldDisplayPopupOnMargin()) { + return owner.backend->CreateContextMenu(theEvent); + } else { + return nil; + } +} + - (void) mouseDown: (NSEvent *) theEvent { NSClipView *textView = [[self scrollView] contentView]; @@ -123,6 +138,13 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor) owner.backend->MouseDown(theEvent); } +- (void) rightMouseDown: (NSEvent *) theEvent +{ + [NSMenu popUpContextMenu:[self menuForEvent: theEvent] withEvent:theEvent forView:self]; + + owner.backend->RightMouseDown(theEvent); +} + - (void) mouseDragged: (NSEvent *) theEvent { owner.backend->MouseMove(theEvent); @@ -380,10 +402,14 @@ static NSCursor *cursorFromEnum(Window::Cursor cursor) */ - (NSMenu*) menuForEvent: (NSEvent*) theEvent { - if (![mOwner respondsToSelector: @selector(menuForEvent:)]) + NSMenu *menu = [mOwner menuForEvent: theEvent]; + if (menu) { + return menu; + } else if (mOwner.backend->ShouldDisplayPopupOnText()) { return mOwner.backend->CreateContextMenu(theEvent); - else - return [mOwner menuForEvent: theEvent]; + } else { + return nil; + } } //-------------------------------------------------------------------------------------------------- |