changeset 4915:834ce48a19c2

Fix right mouse event handling in Cocoa NSView in Cocoa has a different event handling procedure for right mouse events (rightMouseDown: etc.)
author Jjgod Jiang <gzjjgod@gmail.com>
date Sun, 09 May 2010 12:58:58 +0800
parents cc7ac6aaac5d
children 3617cec7f0ee
files src/video/cocoa/SDL_cocoawindow.m
diffstat 1 files changed, 29 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/video/cocoa/SDL_cocoawindow.m	Tue Nov 23 20:29:45 2010 -0500
+++ b/src/video/cocoa/SDL_cocoawindow.m	Sun May 09 12:58:58 2010 +0800
@@ -376,6 +376,30 @@
 }
 @end
 
+@interface SDLView : NSView {
+    Cocoa_WindowListener *listener;
+}
+@end
+
+@implementation SDLView
+
+- (id) initWithFrame: (NSRect) rect
+            listener: (Cocoa_WindowListener *) theListener
+{
+    if (self = [super initWithFrame:rect]) {
+        listener = theListener;
+    }
+
+    return self;
+}
+
+- (void)rightMouseDown:(NSEvent *)theEvent
+{
+    [listener mouseDown:theEvent];
+}
+
+@end
+
 static int
 SetupWindowData(_THIS, SDL_Window * window, NSWindow *nswindow, SDL_bool created)
 {
@@ -407,6 +431,11 @@
     {
         SDL_Rect bounds;
         NSRect rect = [nswindow contentRectForFrameRect:[nswindow frame]];
+        NSView *contentView = [[SDLView alloc] initWithFrame: rect
+                                                    listener: data->listener];
+        [nswindow setContentView: contentView];
+        [contentView release];
+
         ConvertNSRect(&rect);
         Cocoa_GetDisplayBounds(_this, display, &bounds);
         window->x = (int)rect.origin.x - bounds.x;