]> git.saurik.com Git - wxWidgets.git/commitdiff
routing native events first to the wx class and only if skipped call native handler
authorStefan Csomor <csomor@advancedconcepts.ch>
Wed, 14 Jan 2009 08:58:59 +0000 (08:58 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Wed, 14 Jan 2009 08:58:59 +0000 (08:58 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58090 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

12 files changed:
include/wx/osx/cocoa/private.h
src/osx/cocoa/button.mm
src/osx/cocoa/choice.mm
src/osx/cocoa/gauge.mm
src/osx/cocoa/glcanvas.mm
src/osx/cocoa/notebook.mm
src/osx/cocoa/scrolbar.mm
src/osx/cocoa/slider.mm
src/osx/cocoa/spinbutt.mm
src/osx/cocoa/srchctrl.mm
src/osx/cocoa/textctrl.mm
src/osx/cocoa/window.mm

index d9ccabc652e8baae90a5d4e1c1fb50a154911466..26f1a90a507210d1465b131b2b7e6aace8794abc 100644 (file)
@@ -117,7 +117,7 @@ public :
 
     void                InstallEventHandler( WXWidget control = NULL );
     
 
     void                InstallEventHandler( WXWidget control = NULL );
     
-    virtual void        DoHandleMouseEvent(NSEvent *event); 
+    virtual bool        DoHandleMouseEvent(NSEvent *event); 
 
 protected:
     WXWidget m_osxView;
 
 protected:
     WXWidget m_osxView;
@@ -190,42 +190,6 @@ protected :
     extern NSPoint wxToNSPoint( NSView* parent, const wxPoint& p );
     extern wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p );
     
     extern NSPoint wxToNSPoint( NSView* parent, const wxPoint& p );
     extern wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p );
     
-    // used for many wxControls
-    
-    @interface wxNSButton : NSButton
-    {
-        wxWidgetCocoaImpl* impl;
-    }
-
-    - (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;
-    - (wxWidgetCocoaImpl*) implementation;
-    - (BOOL) isFlipped;
-    - (void) clickedAction: (id) sender;
-
-    @end
-
-    @interface wxNSBox : NSBox
-    {
-        wxWidgetCocoaImpl* impl;
-    }
-
-    - (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;
-    - (wxWidgetCocoaImpl*) implementation;
-    - (BOOL) isFlipped;
-
-    @end
-
-    @interface wxNSTextField : NSTextField
-    {
-        wxWidgetCocoaImpl* impl;
-    }
-
-    - (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;
-    - (wxWidgetCocoaImpl*) implementation;
-    - (BOOL) isFlipped;
-
-    @end
-
     NSRect WXDLLIMPEXP_CORE wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const wxSize &size , 
         bool adjustForOrigin = true );
         
     NSRect WXDLLIMPEXP_CORE wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const wxSize &size , 
         bool adjustForOrigin = true );
         
@@ -238,37 +202,91 @@ protected :
         -(void)mouseUp:(NSEvent *)event ;\
         -(void)rightMouseUp:(NSEvent *)event ;\
         -(void)otherMouseUp:(NSEvent *)event ;\
         -(void)mouseUp:(NSEvent *)event ;\
         -(void)rightMouseUp:(NSEvent *)event ;\
         -(void)otherMouseUp:(NSEvent *)event ;\
-        -(void)handleMouseEvent:(NSEvent *)event;
 
     #define WXCOCOAIMPL_COMMON_MOUSE_IMPLEMENTATION -(void)mouseDown:(NSEvent *)event \
         {\
 
     #define WXCOCOAIMPL_COMMON_MOUSE_IMPLEMENTATION -(void)mouseDown:(NSEvent *)event \
         {\
-            [self handleMouseEvent:event];\
+            if ( !impl->DoHandleMouseEvent(event) )\
+                [super mouseDown:event];\
         }\
         -(void)rightMouseDown:(NSEvent *)event\
         {\
         }\
         -(void)rightMouseDown:(NSEvent *)event\
         {\
-            [self handleMouseEvent:event];\
+            if ( !impl->DoHandleMouseEvent(event) )\
+                [super rightMouseDown:event];\
         }\
         -(void)otherMouseDown:(NSEvent *)event\
         {\
         }\
         -(void)otherMouseDown:(NSEvent *)event\
         {\
-            [self handleMouseEvent:event];\
+            if ( !impl->DoHandleMouseEvent(event) )\
+                [super otherMouseDown:event];\
         }\
         -(void)mouseUp:(NSEvent *)event\
         {\
         }\
         -(void)mouseUp:(NSEvent *)event\
         {\
-            [self handleMouseEvent:event];\
+            if ( !impl->DoHandleMouseEvent(event) )\
+                [super mouseUp:event];\
         }\
         -(void)rightMouseUp:(NSEvent *)event\
         {\
         }\
         -(void)rightMouseUp:(NSEvent *)event\
         {\
-            [self handleMouseEvent:event];\
+            if ( !impl->DoHandleMouseEvent(event) )\
+                [super rightMouseUp:event];\
         }\
         -(void)otherMouseUp:(NSEvent *)event\
         {\
         }\
         -(void)otherMouseUp:(NSEvent *)event\
         {\
-            [self handleMouseEvent:event];\
-        }\
-        -(void)handleMouseEvent:(NSEvent *)event\
-        {\
-            impl->DoHandleMouseEvent(event);\
+            if ( !impl->DoHandleMouseEvent(event) )\
+                [super otherMouseUp:event];\
         }
         
         }
         
+    #define WXCOCOAIMPL_COMMON_MEMBERS wxWidgetCocoaImpl* impl;
+    
+    #define WXCOCOAIMPL_COMMON_INTERFACE \
+        - (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;\
+        - (wxWidgetCocoaImpl*) implementation;\
+        - (BOOL) isFlipped;\
+        WXCOCOAIMPL_COMMON_MOUSE_INTERFACE
+
+    #define WXCOCOAIMPL_COMMON_IMPLEMENTATION WXCOCOAIMPL_COMMON_MOUSE_IMPLEMENTATION \
+        - (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation\
+        {\
+            impl = theImplementation;\
+        }\
+        - (wxWidgetCocoaImpl*) implementation\
+        {\
+            return impl;\
+        }\
+        - (BOOL) isFlipped\
+        {\
+            return YES;\
+        }\
+
+    // used for many wxControls
+    
+    @interface wxNSButton : NSButton
+    {
+        WXCOCOAIMPL_COMMON_MEMBERS
+    }
+
+    WXCOCOAIMPL_COMMON_INTERFACE
+    - (void) clickedAction: (id) sender;
+
+    @end
+
+    @interface wxNSBox : NSBox
+    {
+        WXCOCOAIMPL_COMMON_MEMBERS
+    }
+
+    WXCOCOAIMPL_COMMON_INTERFACE
+
+    @end
+
+    @interface wxNSTextField : NSTextField
+    {
+       WXCOCOAIMPL_COMMON_MEMBERS
+    }
+
+    WXCOCOAIMPL_COMMON_INTERFACE
+    
+    @end
+
+
 #endif // __OBJC__
 
 // NSCursor
 #endif // __OBJC__
 
 // NSCursor
index 60c1c45bf468822315a6d34166b11bf76d59d282..ffe3c6e3974622cbd6c875b8db0d740cc8ae13c0 100644 (file)
@@ -132,6 +132,8 @@ wxSize wxButton::GetDefaultSize()
     return self;
 }
 
     return self;
 }
 
+WXCOCOAIMPL_COMMON_IMPLEMENTATION
+
 - (void) clickedAction: (id) sender
 {
     if ( impl )
 - (void) clickedAction: (id) sender
 {
     if ( impl )
@@ -142,21 +144,6 @@ wxSize wxButton::GetDefaultSize()
     }
 }
 
     }
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation
-{
-    impl = theImplementation;
-}
-
-- (wxWidgetCocoaImpl*) implementation
-{
-    return impl;
-}
-
-- (BOOL) isFlipped
-{
-    return YES;
-}
-
 - (int) intValue
 {
     switch ( [self state] )
 - (int) intValue
 {
     switch ( [self state] )
index 931a7308d47971556767049b4e7d512df2e7f868..01ba759f82cd7f044f1d6185fe697f9b5a343333 100644 (file)
 
 @interface wxNSPopUpButton : NSPopUpButton
 {
 
 @interface wxNSPopUpButton : NSPopUpButton
 {
-    wxWidgetCocoaImpl* impl;
+    WXCOCOAIMPL_COMMON_MEMBERS
 }
 
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;
-- (wxWidgetCocoaImpl*) implementation;
-- (BOOL) isFlipped;
+WXCOCOAIMPL_COMMON_INTERFACE
+
 - (void) clickedAction: (id) sender;
 
 @end
 - (void) clickedAction: (id) sender;
 
 @end
     }
 }
 
     }
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation
-{
-    impl = theImplementation;
-}
-
-- (wxWidgetCocoaImpl*) implementation
-{
-    return impl;
-}
-
-- (BOOL) isFlipped
-{
-    return YES;
-}
+WXCOCOAIMPL_COMMON_IMPLEMENTATION
 
 - (int) intValue
 {
 
 - (int) intValue
 {
index 77189ce3d5fdb37096f8727c7b824be9ad1bd8e6..2620e530357f786a36836b41e82364687c11860a 100644 (file)
 
 @interface wxNSProgressIndicator : NSProgressIndicator
 {
 
 @interface wxNSProgressIndicator : NSProgressIndicator
 {
-    wxWidgetCocoaImpl* impl;
+    WXCOCOAIMPL_COMMON_MEMBERS
 }
 
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;
-- (wxWidgetImpl*) implementation;
-- (BOOL) isFlipped;
+WXCOCOAIMPL_COMMON_INTERFACE
 
 @end
 
 
 @end
 
     return self;
 }
 
     return self;
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation
-{
-    impl = theImplementation;
-}
-
-- (wxWidgetCocoaImpl*) implementation
-{
-    return impl;
-}
-
-- (BOOL) isFlipped
-{
-    return YES;
-}
+WXCOCOAIMPL_COMMON_IMPLEMENTATION
 
 @end
 
 
 @end
 
index 4e6654452c4669c851b067225bdf33a0173d0ee0..e088ede061fa7e95f27632a927dfcf52364b93d6 100644 (file)
@@ -229,14 +229,13 @@ bool wxGLContext::SetCurrent(const wxGLCanvas& win) const
 
 @interface wxNSCustomOpenGLView : NSView
 {
 
 @interface wxNSCustomOpenGLView : NSView
 {
-    wxWidgetCocoaImpl* impl;
+    WXCOCOAIMPL_COMMON_MEMBERS
     NSOpenGLContext* context;
 }
 
 - (id)initWithFrame:(NSRect)frame;
     NSOpenGLContext* context;
 }
 
 - (id)initWithFrame:(NSRect)frame;
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;
-- (wxWidgetCocoaImpl*) implementation;
-- (BOOL) isFlipped;
+
+WXCOCOAIMPL_COMMON_INTERFACE
 
 @end
 
 
 @end
 
@@ -249,20 +248,7 @@ bool wxGLContext::SetCurrent(const wxGLCanvas& win) const
     return self;
 }
 
     return self;
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation
-{
-    impl = theImplementation;
-}
-
-- (wxWidgetCocoaImpl*) implementation
-{
-    return impl;
-}
-
-- (BOOL) isFlipped
-{
-    return YES;
-}
+WXCOCOAIMPL_COMMON_IMPLEMENTATION
 
 - (BOOL)isOpaque
 {
 
 - (BOOL)isOpaque
 {
index d4acf6b3200614d15227663cbed8f7d85781798f..bf86c4fbdf8f6f4dcea22f93c6a932bcf36d5dbc 100644 (file)
 
 @interface wxNSTabView : NSTabView
 {
 
 @interface wxNSTabView : NSTabView
 {
-    wxWidgetCocoaImpl* impl;
+    WXCOCOAIMPL_COMMON_MEMBERS
 }
 
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;
-- (wxWidgetCocoaImpl*) implementation;
-- (BOOL) isFlipped;
+WXCOCOAIMPL_COMMON_INTERFACE
 
 @end
 
 
 @end
 
 
 @implementation wxNSTabView
 
 
 @implementation wxNSTabView
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation
-{
-    impl = theImplementation;
-}
-
-- (wxWidgetCocoaImpl*) implementation
-{
-    return impl;
-}
-
-- (BOOL) isFlipped
-{
-    return YES;
-}
+WXCOCOAIMPL_COMMON_IMPLEMENTATION
 
 @end
 
 
 @end
 
index e2a7b01f98ce40dcaf7bd36d85c18cc5948b7a69..ba5a6f1a5776970c39768642b17e4ec23bc9b1f5 100644 (file)
 
 @interface wxNSScroller : NSScroller
 {
 
 @interface wxNSScroller : NSScroller
 {
-    wxWidgetCocoaImpl* impl;
+    WXCOCOAIMPL_COMMON_MEMBERS
 }
 
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;
-- (wxWidgetCocoaImpl*) implementation;
-- (BOOL) isFlipped;
+WXCOCOAIMPL_COMMON_INTERFACE
+
  - (void) clickedAction: (id) sender;
 
 @end
  - (void) clickedAction: (id) sender;
 
 @end
     }
 }
 
     }
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation
-{
-    impl = theImplementation;
-}
-
-- (wxWidgetCocoaImpl*) implementation
-{
-    return impl ;
-}
-
-- (BOOL) isFlipped
-{
-    return YES;
-}
+WXCOCOAIMPL_COMMON_IMPLEMENTATION
 
 @end
 
 
 @end
 
index 227435b77d413dac1cbcfdba82a4722bb42e1754..a56acbeaddfa1750e19c74eeb3f86fec8aca088d 100644 (file)
 
 @interface wxNSSlider : NSSlider
 {
 
 @interface wxNSSlider : NSSlider
 {
-    wxWidgetCocoaImpl* impl;
+    WXCOCOAIMPL_COMMON_MEMBERS
 }
 
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;
-- (wxWidgetCocoaImpl*) implementation;
-- (BOOL) isFlipped;
+WXCOCOAIMPL_COMMON_INTERFACE
+
  - (void) clickedAction: (id) sender;
 
 @end
  - (void) clickedAction: (id) sender;
 
 @end
     }
 }
 
     }
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation
-{
-    impl = theImplementation;
-}
-
-- (wxWidgetCocoaImpl*) implementation
-{
-    return impl;
-}
-
-- (BOOL) isFlipped
-{
-    return YES;
-}
+WXCOCOAIMPL_COMMON_IMPLEMENTATION
 
 @end
 
 
 @end
 
index 980fc81ddaf448e1ff1583635a68eda66a41db61..872bef97a8fb7d0584c234e8ec6afa620f094b70 100644 (file)
 
 @interface wxNSStepper : NSStepper
 {
 
 @interface wxNSStepper : NSStepper
 {
-    wxWidgetCocoaImpl* impl;
+    WXCOCOAIMPL_COMMON_MEMBERS
 }
 
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;
-- (wxWidgetCocoaImpl*) implementation;
-- (BOOL) isFlipped;
+WXCOCOAIMPL_COMMON_INTERFACE
+
  - (void) clickedAction: (id) sender;
 
 @end
  - (void) clickedAction: (id) sender;
 
 @end
     }
 }
 
     }
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation
-{
-    impl = theImplementation;
-}
-
-- (wxWidgetCocoaImpl*) implementation
-{
-    return impl;
-}
-
-- (BOOL) isFlipped
-{
-    return YES;
-}
+WXCOCOAIMPL_COMMON_IMPLEMENTATION
 
 @end
 
 
 @end
 
index 34758780b96fb23579d429deaced3a551492006d..c1abb250ffce51000f9272e86c4295ba9c9dc435 100644 (file)
 
 @interface wxNSSearchField : NSSearchField
 {
 
 @interface wxNSSearchField : NSSearchField
 {
-    wxWidgetCocoaImpl* impl;
+    WXCOCOAIMPL_COMMON_MEMBERS
 }
 
 }
 
+WXCOCOAIMPL_COMMON_INTERFACE
+
 @end
 
 @implementation wxNSSearchField
 @end
 
 @implementation wxNSSearchField
     return self;
 }
 
     return self;
 }
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation
-{
-    impl = theImplementation;
-}
-
-- (wxWidgetCocoaImpl*) implementation
-{
-    return impl;
-}
-
-- (BOOL) isFlipped
-{
-    return YES;
-}
+WXCOCOAIMPL_COMMON_IMPLEMENTATION
 
 // use our common calls
 - (void) setTitle:(NSString *) title
 
 // use our common calls
 - (void) setTitle:(NSString *) title
index 199f6de54368df617c7616e4f408d76e19db0c88..16881be7c73da9193a69e9d253232ff67a8bb364 100644 (file)
 
 @implementation wxNSTextField
 
 
 @implementation wxNSTextField
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation
-{
-    impl = theImplementation;
-}
-
-- (wxWidgetCocoaImpl*) implementation
-{
-    return impl;
-}
-
-- (BOOL) isFlipped
-{
-    return YES;
-}
+WXCOCOAIMPL_COMMON_IMPLEMENTATION
 
 // use our common calls
 - (void) setTitle:(NSString *) title
 
 // use our common calls
 - (void) setTitle:(NSString *) title
index ce2fa679f822a14aa42934a4704986fd83f10c52..524a5b2645ed8cdd2e8d5293a8b937aac7137b5c 100644 (file)
@@ -32,21 +32,18 @@ NSRect wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const
 
 @interface wxNSView : NSView
 {
 
 @interface wxNSView : NSView
 {
-    wxWidgetCocoaImpl* impl;
+    WXCOCOAIMPL_COMMON_MEMBERS
 }
 
 - (void)drawRect: (NSRect) rect;
 
 }
 
 - (void)drawRect: (NSRect) rect;
 
-WXCOCOAIMPL_COMMON_MOUSE_INTERFACE
-
 - (void)keyDown:(NSEvent *)event;
 - (void)keyUp:(NSEvent *)event;
 - (void)flagsChanged:(NSEvent *)event;
 - (void)handleKeyEvent:(NSEvent *)event;
 
 - (void)keyDown:(NSEvent *)event;
 - (void)keyUp:(NSEvent *)event;
 - (void)flagsChanged:(NSEvent *)event;
 - (void)handleKeyEvent:(NSEvent *)event;
 
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;
-- (wxWidgetCocoaImpl*) implementation;
-- (BOOL) isFlipped;
+WXCOCOAIMPL_COMMON_INTERFACE
+
 - (BOOL) becomeFirstResponder;
 - (BOOL) resignFirstResponder;
 - (BOOL) canBecomeKeyView;
 - (BOOL) becomeFirstResponder;
 - (BOOL) resignFirstResponder;
 - (BOOL) canBecomeKeyView;
@@ -342,7 +339,7 @@ void SetupMouseEvent( wxMouseEvent &wxevent , NSEvent * nsEvent )
     }
 }
 
     }
 }
 
-WXCOCOAIMPL_COMMON_MOUSE_IMPLEMENTATION
+WXCOCOAIMPL_COMMON_IMPLEMENTATION
 
 - (void)keyDown:(NSEvent *)event
 {
 
 - (void)keyDown:(NSEvent *)event
 {
@@ -366,22 +363,6 @@ WXCOCOAIMPL_COMMON_MOUSE_IMPLEMENTATION
     impl->GetWXPeer()->HandleWindowEvent(wxevent);
 }
 
     impl->GetWXPeer()->HandleWindowEvent(wxevent);
 }
 
-
-- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation
-{
-    impl = theImplementation;
-}
-
-- (wxWidgetCocoaImpl*) implementation
-{
-    return impl;
-}
-
-- (BOOL) isFlipped
-{
-    return YES;
-}
-
 - (BOOL) becomeFirstResponder
 {
     BOOL r = [super becomeFirstResponder];
 - (BOOL) becomeFirstResponder
 {
     BOOL r = [super becomeFirstResponder];
@@ -676,7 +657,7 @@ void wxWidgetCocoaImpl::InstallEventHandler( WXWidget control )
 {
 }
 
 {
 }
 
-void wxWidgetCocoaImpl::DoHandleMouseEvent(NSEvent *event)
+bool wxWidgetCocoaImpl::DoHandleMouseEvent(NSEvent *event)
 {
     NSPoint clickLocation; 
     clickLocation = [m_osxView convertPoint:[event locationInWindow] fromView:nil]; 
 {
     NSPoint clickLocation; 
     clickLocation = [m_osxView convertPoint:[event locationInWindow] fromView:nil]; 
@@ -685,7 +666,8 @@ void wxWidgetCocoaImpl::DoHandleMouseEvent(NSEvent *event)
     SetupMouseEvent( wxevent , event ) ;
     wxevent.m_x = pt.x;
     wxevent.m_y = pt.y;
     SetupMouseEvent( wxevent , event ) ;
     wxevent.m_x = pt.x;
     wxevent.m_y = pt.y;
-    GetWXPeer()->HandleWindowEvent(wxevent);
+
+    return GetWXPeer()->HandleWindowEvent(wxevent);
 }
 
 
 }