routing native events first to the wx class and only if skipped call native handler

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58090 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2009-01-14 08:58:59 +00:00
parent cf516c2bb2
commit b466e85a7e
12 changed files with 106 additions and 243 deletions

View 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: protected:
WXWidget m_osxView; WXWidget m_osxView;
@@ -190,42 +190,6 @@ protected :
extern NSPoint wxToNSPoint( NSView* parent, const wxPoint& p ); extern NSPoint wxToNSPoint( NSView* parent, const wxPoint& p );
extern wxPoint wxFromNSPoint( NSView* parent, const NSPoint& 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 , NSRect WXDLLIMPEXP_CORE wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const wxSize &size ,
bool adjustForOrigin = true ); bool adjustForOrigin = true );
@@ -238,37 +202,91 @@ protected :
-(void)mouseUp:(NSEvent *)event ;\ -(void)mouseUp:(NSEvent *)event ;\
-(void)rightMouseUp:(NSEvent *)event ;\ -(void)rightMouseUp:(NSEvent *)event ;\
-(void)otherMouseUp:(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];\ if ( !impl->DoHandleMouseEvent(event) )\
}\ [super otherMouseUp:event];\
-(void)handleMouseEvent:(NSEvent *)event\
{\
impl->DoHandleMouseEvent(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__ #endif // __OBJC__
// NSCursor // NSCursor

View File

@@ -132,6 +132,8 @@ wxSize wxButton::GetDefaultSize()
return self; return self;
} }
WXCOCOAIMPL_COMMON_IMPLEMENTATION
- (void) clickedAction: (id) sender - (void) clickedAction: (id) sender
{ {
if ( impl ) 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 - (int) intValue
{ {
switch ( [self state] ) switch ( [self state] )

View File

@@ -24,12 +24,11 @@
@interface wxNSPopUpButton : NSPopUpButton @interface wxNSPopUpButton : NSPopUpButton
{ {
wxWidgetCocoaImpl* impl; WXCOCOAIMPL_COMMON_MEMBERS
} }
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation; WXCOCOAIMPL_COMMON_INTERFACE
- (wxWidgetCocoaImpl*) implementation;
- (BOOL) isFlipped;
- (void) clickedAction: (id) sender; - (void) clickedAction: (id) sender;
@end @end
@@ -55,20 +54,7 @@
} }
} }
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation WXCOCOAIMPL_COMMON_IMPLEMENTATION
{
impl = theImplementation;
}
- (wxWidgetCocoaImpl*) implementation
{
return impl;
}
- (BOOL) isFlipped
{
return YES;
}
- (int) intValue - (int) intValue
{ {

View File

@@ -19,12 +19,10 @@
@interface wxNSProgressIndicator : NSProgressIndicator @interface wxNSProgressIndicator : NSProgressIndicator
{ {
wxWidgetCocoaImpl* impl; WXCOCOAIMPL_COMMON_MEMBERS
} }
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation; WXCOCOAIMPL_COMMON_INTERFACE
- (wxWidgetImpl*) implementation;
- (BOOL) isFlipped;
@end @end
@@ -37,20 +35,7 @@
return self; return self;
} }
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation WXCOCOAIMPL_COMMON_IMPLEMENTATION
{
impl = theImplementation;
}
- (wxWidgetCocoaImpl*) implementation
{
return impl;
}
- (BOOL) isFlipped
{
return YES;
}
@end @end

View 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; NSOpenGLContext* context;
} }
- (id)initWithFrame:(NSRect)frame; - (id)initWithFrame:(NSRect)frame;
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation;
- (wxWidgetCocoaImpl*) implementation; WXCOCOAIMPL_COMMON_INTERFACE
- (BOOL) isFlipped;
@end @end
@@ -249,20 +248,7 @@ bool wxGLContext::SetCurrent(const wxGLCanvas& win) const
return self; return self;
} }
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation WXCOCOAIMPL_COMMON_IMPLEMENTATION
{
impl = theImplementation;
}
- (wxWidgetCocoaImpl*) implementation
{
return impl;
}
- (BOOL) isFlipped
{
return YES;
}
- (BOOL)isOpaque - (BOOL)isOpaque
{ {

View File

@@ -41,12 +41,10 @@
@interface wxNSTabView : NSTabView @interface wxNSTabView : NSTabView
{ {
wxWidgetCocoaImpl* impl; WXCOCOAIMPL_COMMON_MEMBERS
} }
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation; WXCOCOAIMPL_COMMON_INTERFACE
- (wxWidgetCocoaImpl*) implementation;
- (BOOL) isFlipped;
@end @end
@@ -85,20 +83,7 @@
@implementation wxNSTabView @implementation wxNSTabView
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation WXCOCOAIMPL_COMMON_IMPLEMENTATION
{
impl = theImplementation;
}
- (wxWidgetCocoaImpl*) implementation
{
return impl;
}
- (BOOL) isFlipped
{
return YES;
}
@end @end

View File

@@ -23,12 +23,11 @@
@interface wxNSScroller : NSScroller @interface wxNSScroller : NSScroller
{ {
wxWidgetCocoaImpl* impl; WXCOCOAIMPL_COMMON_MEMBERS
} }
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation; WXCOCOAIMPL_COMMON_INTERFACE
- (wxWidgetCocoaImpl*) implementation;
- (BOOL) isFlipped;
- (void) clickedAction: (id) sender; - (void) clickedAction: (id) sender;
@end @end
@@ -54,20 +53,7 @@
} }
} }
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation WXCOCOAIMPL_COMMON_IMPLEMENTATION
{
impl = theImplementation;
}
- (wxWidgetCocoaImpl*) implementation
{
return impl ;
}
- (BOOL) isFlipped
{
return YES;
}
@end @end

View File

@@ -18,12 +18,11 @@
@interface wxNSSlider : NSSlider @interface wxNSSlider : NSSlider
{ {
wxWidgetCocoaImpl* impl; WXCOCOAIMPL_COMMON_MEMBERS
} }
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation; WXCOCOAIMPL_COMMON_INTERFACE
- (wxWidgetCocoaImpl*) implementation;
- (BOOL) isFlipped;
- (void) clickedAction: (id) sender; - (void) clickedAction: (id) sender;
@end @end
@@ -49,20 +48,7 @@
} }
} }
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation WXCOCOAIMPL_COMMON_IMPLEMENTATION
{
impl = theImplementation;
}
- (wxWidgetCocoaImpl*) implementation
{
return impl;
}
- (BOOL) isFlipped
{
return YES;
}
@end @end

View File

@@ -18,12 +18,11 @@
@interface wxNSStepper : NSStepper @interface wxNSStepper : NSStepper
{ {
wxWidgetCocoaImpl* impl; WXCOCOAIMPL_COMMON_MEMBERS
} }
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation; WXCOCOAIMPL_COMMON_INTERFACE
- (wxWidgetCocoaImpl*) implementation;
- (BOOL) isFlipped;
- (void) clickedAction: (id) sender; - (void) clickedAction: (id) sender;
@end @end
@@ -49,20 +48,7 @@
} }
} }
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation WXCOCOAIMPL_COMMON_IMPLEMENTATION
{
impl = theImplementation;
}
- (wxWidgetCocoaImpl*) implementation
{
return impl;
}
- (BOOL) isFlipped
{
return YES;
}
@end @end

View File

@@ -31,9 +31,11 @@
@interface wxNSSearchField : NSSearchField @interface wxNSSearchField : NSSearchField
{ {
wxWidgetCocoaImpl* impl; WXCOCOAIMPL_COMMON_MEMBERS
} }
WXCOCOAIMPL_COMMON_INTERFACE
@end @end
@implementation wxNSSearchField @implementation wxNSSearchField
@@ -47,20 +49,7 @@
return self; return self;
} }
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation WXCOCOAIMPL_COMMON_IMPLEMENTATION
{
impl = theImplementation;
}
- (wxWidgetCocoaImpl*) implementation
{
return impl;
}
- (BOOL) isFlipped
{
return YES;
}
// use our common calls // use our common calls
- (void) setTitle:(NSString *) title - (void) setTitle:(NSString *) title

View File

@@ -51,20 +51,7 @@
@implementation wxNSTextField @implementation wxNSTextField
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation WXCOCOAIMPL_COMMON_IMPLEMENTATION
{
impl = theImplementation;
}
- (wxWidgetCocoaImpl*) implementation
{
return impl;
}
- (BOOL) isFlipped
{
return YES;
}
// use our common calls // use our common calls
- (void) setTitle:(NSString *) title - (void) setTitle:(NSString *) title

View 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)keyDown:(NSEvent *)event;
- (void)keyUp:(NSEvent *)event; - (void)keyUp:(NSEvent *)event;
- (void)flagsChanged:(NSEvent *)event; - (void)flagsChanged:(NSEvent *)event;
- (void)handleKeyEvent:(NSEvent *)event; - (void)handleKeyEvent:(NSEvent *)event;
- (void)setImplementation: (wxWidgetCocoaImpl *) theImplementation; WXCOCOAIMPL_COMMON_INTERFACE
- (wxWidgetCocoaImpl*) implementation;
- (BOOL) isFlipped;
- (BOOL) becomeFirstResponder; - (BOOL) becomeFirstResponder;
- (BOOL) resignFirstResponder; - (BOOL) resignFirstResponder;
- (BOOL) canBecomeKeyView; - (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) becomeFirstResponder
{ {
BOOL r = [super 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; NSPoint clickLocation;
clickLocation = [m_osxView convertPoint:[event locationInWindow] fromView:nil]; clickLocation = [m_osxView convertPoint:[event locationInWindow] fromView:nil];
@@ -685,7 +666,8 @@ void wxWidgetCocoaImpl::DoHandleMouseEvent(NSEvent *event)
SetupMouseEvent( wxevent , event ) ; SetupMouseEvent( wxevent , event ) ;
wxevent.m_x = pt.x; wxevent.m_x = pt.x;
wxevent.m_y = pt.y; wxevent.m_y = pt.y;
GetWXPeer()->HandleWindowEvent(wxevent);
return GetWXPeer()->HandleWindowEvent(wxevent);
} }