#endif
#include "wx/cocoa/autorelease.h"
+#include "wx/cocoa/trackingrectmanager.h"
+#include "wx/cocoa/objc/objc_uniquifying.h"
#import <AppKit/NSControl.h>
#import <AppKit/NSCell.h>
- (void)otherMouseDragged:(NSEvent *)theEvent;
- (void)otherMouseUp:(NSEvent *)theEvent;
- (void)resetCursorRects;
+- (void)viewDidMoveToWindow;
+- (void)viewWillMoveToWindow:(NSWindow *)newWindow;
@end // wxNonControlNSControl
+WX_DECLARE_GET_OBJC_CLASS(wxNonControlNSControl,NSControl)
@implementation wxNonControlNSControl : NSControl
[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 // wxNonControlNSControl
+WX_IMPLEMENT_GET_OBJC_CLASS(wxNonControlNSControl,NSControl)
IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow)
BEGIN_EVENT_TABLE(wxControl, wxControlBase)
return false;
wxLogTrace(wxTRACE_COCOA,wxT("Created control with id=%d"),GetId());
m_cocoaNSView = NULL;
- SetNSControl([[wxNonControlNSControl alloc] initWithFrame: MakeDefaultNSRect(size)]);
+ SetNSControl([[WX_GET_OBJC_CLASS(wxNonControlNSControl) alloc] initWithFrame: MakeDefaultNSRect(size)]);
// NOTE: YES we want to release this (to match the alloc).
// DoAddChild(this) will retain us again since addSubView doesn't.
[m_cocoaNSView release];
m_parent->CocoaAddChild(this);
SetInitialFrameRect(pos,size);
+ // Controls should have a viewable-area tracking rect by default
+ m_visibleTrackingRectManager = new wxCocoaTrackingRectManager(this);
+
return true;
}