Implemented drawRect override in wxPoserNSView
Declared pure virtual wxCocoaNSView::Cocoa_drawRect
Made wxWindowCocoa::Cocoa_FrameChanged protected (unrelated)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19922
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
#include "wx/hashmap.h"
#include "wx/cocoa/ObjcPose.h"
+typedef struct _NSRect NSRect;
+
WX_DECLARE_OBJC_HASHMAP(NSView);
class wxCocoaNSView
{
static void *sm_cocoaObserver;
public:
virtual void Cocoa_FrameChanged(void) = 0;
+ virtual bool Cocoa_drawRect(const NSRect &rect) = 0;
};
#endif // _WX_COCOA_NSVIEW_H_
inline WX_NSView GetNSView() { return m_cocoaNSView; }
void CocoaAddChild(wxWindowCocoa *child);
void CocoaRemoveFromParent(void);
- virtual void Cocoa_FrameChanged(void);
protected:
+ virtual void Cocoa_FrameChanged(void);
+ virtual bool Cocoa_drawRect(const NSRect &rect);
void SetNSView(WX_NSView cocoaNSView);
WX_NSView m_cocoaNSView;
WX_NSView m_dummyNSView;
{
}
+- (void)drawRect: (NSRect)rect;
@end // wxPoserNSView
WX_IMPLEMENT_POSER(wxPoserNSView);
@implementation wxPoserNSView : NSView
+- (void)drawRect: (NSRect)rect
+{
+ wxCocoaNSView *win = wxCocoaNSView::GetFromCocoa(self);
+ if( !win || !win->Cocoa_drawRect(rect) )
+ [super drawRect:rect];
+}
+
@end // implementation wxPoserNSView
@interface wxNSViewNotificationObserver : NSObject
if(need_debug) wxLogDebug("wxWindowCocoa=%p::SetNSView [cocoaNSView=%p retainCount]=%d",this,cocoaNSView,[cocoaNSView retainCount]);
}
+bool wxWindowCocoa::Cocoa_drawRect(const NSRect &rect)
+{
+ wxLogDebug("Cocoa_drawRect");
+ //FIXME: should probably turn that rect into the update region
+ wxPaintEvent event(m_windowId);
+ event.SetEventObject(this);
+ return GetEventHandler()->ProcessEvent(event);
+}
+
void wxWindowCocoa::Cocoa_FrameChanged(void)
{
wxLogDebug("Cocoa_FrameChanged");