#endif
#include "wx/cocoa/autorelease.h"
+#include "wx/cocoa/string.h"
+#include "wx/cocoa/trackingrectmanager.h"
#include "wx/cocoa/objc/objc_uniquifying.h"
#import <AppKit/NSControl.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)
[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)
m_parent->CocoaAddChild(this);
SetInitialFrameRect(pos,size);
+ // Controls should have a viewable-area tracking rect by default
+ m_visibleTrackingRectManager = new wxCocoaTrackingRectManager(this);
+
return true;
}
wxASSERT(GetNSControl());
/* We can ask single-celled controls for their cell and get its size */
NSCell *cell = nil;
-NS_DURING
- cell = [GetNSControl() cell];
-NS_HANDLER
- // TODO: if anything other than method not implemented, re-raise
-NS_ENDHANDLER
+ if([GetNSControl() respondsToSelector:@selector(cell)])
+ cell = [GetNSControl() cell];
if(cell)
{
NSSize cellSize = [cell cellSize];
}
/* multi-celled control? size to fit, get the size, then set it back */
- NSRect storedRect = [m_cocoaNSView frame];
- bool didFit = false;
-NS_DURING
- [GetNSControl() sizeToFit];
- didFit = true;
-NS_HANDLER
- // TODO: if anything other than method not implemented, re-raise
-NS_ENDHANDLER
- if(didFit)
+ if([GetNSControl() respondsToSelector:@selector(sizeToFit)])
{
+ NSRect storedRect = [m_cocoaNSView frame];
+ [GetNSControl() sizeToFit];
NSRect cocoaRect = [m_cocoaNSView frame];
wxSize size((int)ceil(cocoaRect.size.width),(int)ceil(cocoaRect.size.height));
[m_cocoaNSView setFrame: storedRect];
{
[GetNSControl() setEnabled: enable];
}
+
+/*static*/ void wxControl::CocoaSetLabelForObject(const wxString& label, struct objc_object *aView)
+{
+ [aView setTitle:wxNSStringWithWxString(GetLabelText(label))];
+}
+