virtual void Freeze() ;
virtual void Thaw() ;
+ virtual void Update() ;
+ virtual void ClearBackground() ;
+
virtual bool SetCursor( const wxCursor &cursor );
virtual bool SetFont( const wxFont &font ) ;
virtual bool SetBackgroundColour( const wxColour &colour );
// event handlers
// --------------
void OnSetFocus(wxFocusEvent& event) ;
+ void OnPaint(wxPaintEvent& event);
void OnNcPaint(wxNcPaintEvent& event);
void OnEraseBackground(wxEraseEvent& event);
void OnMouseEvent( wxMouseEvent &event ) ;
// this should not be overriden in classes above wxWindowMac because it is called from its destructor via DeleteChildren
virtual void RemoveChild( wxWindowBase *child );
virtual void MacPaintBorders( int left , int top ) ;
+ // invalidates the borders and focus area around the control
+ // must not be virtual as it will be called during destruction
+ void MacInvalidateBorders() ;
WXWindow MacGetTopLevelWindowRef() const ;
wxTopLevelWindowMac* MacGetTopLevelWindow() const ;
virtual long MacGetBottomBorderSize() const ;
static long MacRemoveBordersFromStyle( long style ) ;
-
+
virtual void MacSuperChangedPosition() ;
// the absolute coortinates of this window's root have changed
virtual void MacTopLevelWindowChangedPosition() ;
bool MacIsUserPane() { return m_macIsUserPane; }
- virtual void Update() ;
virtual bool MacSetupCursor( const wxPoint& pt ) ;
virtual void MacSetBackgroundBrush( const wxBrush &brush ) ;
const wxBrush& MacGetBackgroundBrush() const { return m_macBackgroundBrush ; }
+ // return the rectangle that would be visible of this control, regardless whether controls are hidden
+ // only taking into account clipping by parent windows
+ const wxRect& MacGetClippedClientRect() const ;
+ const wxRect& MacGetClippedRect() const ;
+ const wxRect& MacGetClippedRectWithOuterStructure() const ;
// returns the visible region of this control in window ie non-client coordinates
-
- wxRegion MacGetVisibleRegion( bool includeOuterStructures = false ) ;
+ const wxRegion& MacGetVisibleRegion( bool includeOuterStructures = false ) ;
// returns true if children have to clipped to the content area (eg scrolled window)
- virtual bool MacClipChildren() const { return false ; }
+ bool MacClipChildren() const { return m_clipChildren ; }
+ void MacSetClipChildren( bool clip ) { m_clipChildren = clip ; }
// returns true if the grandchildren have to be clipped to the children's content area (eg
// splitter window)
virtual bool MacClipGrandChildren() const { return false ; }
// flash the current invalid area, useful for debugging in OSX double buffered situation
void MacFlashInvalidAreas() ;
+
+ // the 'true' OS level control for this wxWindow
+ wxMacControl* GetPeer() const { return m_peer ; }
#if wxMAC_USE_CORE_GRAPHICS
void * MacGetCGContextRef() { return m_cgContextRef ; }
void MacSetCGContextRef(void * cg) { m_cgContextRef = cg ; }
#if wxMAC_USE_CORE_GRAPHICS
void * m_cgContextRef ;
#endif
+ // cache the clipped rectangles within the window hierarchy
+ void MacUpdateClippedRects() const ;
+ mutable bool m_cachedClippedRectValid ;
+ mutable wxRect m_cachedClippedRectWithOuterStructure ;
+ mutable wxRect m_cachedClippedRect ;
+ mutable wxRect m_cachedClippedClientRect ;
+ mutable wxRegion m_cachedClippedRegionWithOuterStructure ;
+ mutable wxRegion m_cachedClippedRegion ;
+ mutable wxRegion m_cachedClippedClientRegion ;
// true if is is not a native control but a wxWindow control
bool m_macIsUserPane ;
wxBrush m_macBackgroundBrush ;
wxScrollBar* m_hScrollBar ;
wxScrollBar* m_vScrollBar ;
wxString m_label ;
+ // returns true if we do a sharp clip at the content area of this window
+ // must be dynamic as eg a panel normally is not clipping precisely, but if
+ // it becomes the target window of a scrolled window it has to...
+ bool m_clipChildren ;
+
+ virtual bool MacIsChildOfClientArea( const wxWindow* child ) const ;
void MacCreateScrollBars( long style ) ;
void MacRepositionScrollBars() ;