From: David Elliott Date: Tue, 1 Apr 2003 17:59:54 +0000 (+0000) Subject: Implemented wxWindowCocoa::Cocoa_drawRect X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/8ea5271ee74fc4a1e39326af3112f5ed9dcd432f Implemented wxWindowCocoa::Cocoa_drawRect 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 --- diff --git a/include/wx/cocoa/NSView.h b/include/wx/cocoa/NSView.h index 10a172fa81..3fc6c7904f 100644 --- a/include/wx/cocoa/NSView.h +++ b/include/wx/cocoa/NSView.h @@ -15,6 +15,8 @@ #include "wx/hashmap.h" #include "wx/cocoa/ObjcPose.h" +typedef struct _NSRect NSRect; + WX_DECLARE_OBJC_HASHMAP(NSView); class wxCocoaNSView { @@ -27,6 +29,7 @@ protected: static void *sm_cocoaObserver; public: virtual void Cocoa_FrameChanged(void) = 0; + virtual bool Cocoa_drawRect(const NSRect &rect) = 0; }; #endif // _WX_COCOA_NSVIEW_H_ diff --git a/include/wx/cocoa/window.h b/include/wx/cocoa/window.h index b0542e1bfa..760d6661a6 100644 --- a/include/wx/cocoa/window.h +++ b/include/wx/cocoa/window.h @@ -53,8 +53,9 @@ public: 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; diff --git a/src/cocoa/NSView.mm b/src/cocoa/NSView.mm index 0238c5c50a..ea69656316 100644 --- a/src/cocoa/NSView.mm +++ b/src/cocoa/NSView.mm @@ -53,11 +53,19 @@ void wxCocoaNSView::DisassociateNSView(WX_NSView cocoaNSView) { } +- (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 diff --git a/src/cocoa/window.mm b/src/cocoa/window.mm index e877d7371b..31c729fcca 100644 --- a/src/cocoa/window.mm +++ b/src/cocoa/window.mm @@ -116,6 +116,15 @@ void wxWindowCocoa::SetNSView(WX_NSView cocoaNSView) 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");