#import <Foundation/NSNotification.h>
#import <Foundation/NSString.h>
#include "wx/cocoa/objc/NSView.h"
+#include "wx/cocoa/ObjcRef.h"
// ----------------------------------------------------------------------------
// globals
[super resetCursorRects];
}
+- (void)viewDidMoveToWindow
+{
+ wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
+ if( !win || !win->Cocoa_viewDidMoveToWindow() )
+ [super viewDidMoveToWindow];
+}
+
+- (void)viewWillMoveToWindow:(NSWindow *)newWindow
+{
+ wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
+ if( !win || !win->Cocoa_viewWillMoveToWindow(newWindow) )
+ [super viewWillMoveToWindow:newWindow];
+}
+
@end // implementation WXNSView
WX_IMPLEMENT_GET_OBJC_CLASS(WXNSView,NSView)
}
- (void)notificationFrameChanged: (NSNotification *)notification;
+- (void)synthesizeMouseMovedForView: (NSView *)theView;
@end // interface wxNSViewNotificationObserver
WX_DECLARE_GET_OBJC_CLASS(wxNSViewNotificationObserver,NSObject)
win->Cocoa_FrameChanged();
}
+- (void)synthesizeMouseMovedForView: (NSView *)theView
+{
+ wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(theView);
+ wxCHECK_RET(win,wxT("synthesizeMouseMovedForView received but no wxWindow exists"));
+ win->Cocoa_synthesizeMouseMoved();
+}
+
@end // implementation wxNSViewNotificationObserver
WX_IMPLEMENT_GET_OBJC_CLASS(wxNSViewNotificationObserver,NSObject)
-void *wxCocoaNSView::sm_cocoaObserver = [[WX_GET_OBJC_CLASS(wxNSViewNotificationObserver) alloc] init];
-
+// New CF-retained observer (this should have been using wxObjcAutoRefFromAlloc to begin with)
+wxObjcAutoRefFromAlloc<wxNSViewNotificationObserver*> s_cocoaNSViewObserver([[WX_GET_OBJC_CLASS(wxNSViewNotificationObserver) alloc] init]);
+// For compatibility with old code
+id wxCocoaNSView::sm_cocoaObserver = s_cocoaNSViewObserver;