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; +  }  }  //--------------------------------------------------------------------------------------------------  | 
