X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b156929dd096cb0c0c46cd4a5747556dde228675..d6906a06a24cf6dd081f1bc955c3255765a0b845:/include/wx/mac/carbon/window.h diff --git a/include/wx/mac/carbon/window.h b/include/wx/mac/carbon/window.h index 43368f9e3e..76b9f3410f 100644 --- a/include/wx/mac/carbon/window.h +++ b/include/wx/mac/carbon/window.h @@ -15,9 +15,9 @@ #include "wx/brush.h" #include "wx/dc.h" -class WXDLLEXPORT wxButton; -class WXDLLEXPORT wxScrollBar; -class WXDLLEXPORT wxTopLevelWindowMac; +class WXDLLIMPEXP_FWD_CORE wxButton; +class WXDLLIMPEXP_FWD_CORE wxScrollBar; +class WXDLLIMPEXP_FWD_CORE wxTopLevelWindowMac; class wxMacControl ; @@ -55,7 +55,6 @@ public: virtual void Lower(); virtual bool Show( bool show = true ); - virtual bool Enable( bool enable = true ); virtual void SetFocus(); @@ -65,6 +64,7 @@ public: const wxRect *rect = NULL ); virtual void Freeze(); virtual void Thaw(); + virtual bool IsFrozen() const; virtual void Update() ; virtual void ClearBackground(); @@ -82,9 +82,11 @@ public: int *externalLeading = NULL, const wxFont *theFont = NULL ) const; - +protected: + virtual void DoEnable( bool enable ); virtual bool DoPopupMenu( wxMenu *menu, int x, int y ); +public: virtual void SetScrollbar( int orient, int pos, int thumbVisible, int range, bool refresh = true ); virtual void SetScrollPos( int orient, int pos, bool refresh = true ); @@ -93,6 +95,13 @@ public: virtual int GetScrollRange( int orient ) const; virtual void ScrollWindow( int dx, int dy, const wxRect* rect = (wxRect *) NULL ); + virtual void AlwaysShowScrollbars(bool horz = true, bool vert = true); + virtual bool IsScrollbarAlwaysShown(int orient) const + { + return orient == wxHORIZONTAL ? m_hScrollBarAlwaysShown + : m_vScrollBarAlwaysShown; + } + virtual bool Reparent( wxWindowBase *newParent ); #if wxUSE_DRAG_AND_DROP @@ -121,14 +130,12 @@ public: virtual WXWidget GetHandle() const; -#if WXWIN_COMPATIBILITY_2_4 - bool GetTransparentBackground() const { return m_backgroundTransparent; } - void SetTransparent(bool t = true) { m_backgroundTransparent = t; } -#endif + virtual bool SetTransparent(wxByte alpha); + virtual bool CanSetTransparent(); + virtual wxByte GetTransparent() const ; // event handlers // -------------- - void OnSetFocus( wxFocusEvent& event ); void OnPaint( wxPaintEvent& event ); void OnNcPaint( wxNcPaintEvent& event ); void OnEraseBackground(wxEraseEvent& event ); @@ -136,7 +143,9 @@ public: void MacOnScroll( wxScrollEvent&event ); - bool AcceptsFocus() const; + virtual bool AcceptsFocus() const; + + virtual bool IsDoubleBuffered() const { return true; } public: static long MacRemoveBordersFromStyle( long style ) ; @@ -152,13 +161,14 @@ public: wxWindowMac *FindItemByHWND(WXHWND hWnd, bool controlOnly = false) const; virtual void MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool mouseStillDown ) ; - virtual bool MacDoRedraw( WXHRGN updatergn , long time ) ; + virtual bool MacDoRedraw( void* updatergn , long time ) ; virtual bool MacCanFocus() const ; // 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 ) ; + void MacPaintGrowBox(); // invalidates the borders and focus area around the control; // must not be virtual as it will be called during destruction @@ -190,8 +200,6 @@ public: bool MacIsUserPane() { return m_macIsUserPane; } 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 @@ -211,25 +219,19 @@ public: // returns true if the grandchildren need to be clipped to the children's content area // (e.g., splitter windows) virtual bool MacClipGrandChildren() const { return false ; } - bool MacIsWindowScrollbar( const wxScrollBar* sb ) - { return (m_hScrollBar == sb || m_vScrollBar == sb) ; } + bool MacIsWindowScrollbar( const wxWindow* sb ) const + { return ((wxWindow*)m_hScrollBar == sb || (wxWindow*)m_vScrollBar == sb) ; } + virtual bool IsClientAreaChild(const wxWindow *child) const + { + return !MacIsWindowScrollbar(child) && + wxWindowBase::IsClientAreaChild(child); + } virtual void MacInstallEventHandler(WXWidget native) ; void MacPostControlCreate(const wxPoint& pos, const wxSize& size) ; wxList& GetSubcontrols() { return m_subControls; } WXEVENTHANDLERREF MacGetControlEventHandler() { return m_macControlEventHandler ; } -#ifndef __WXMAC_OSX__ - virtual void MacControlUserPaneDrawProc(wxInt16 part) ; - virtual wxInt16 MacControlUserPaneHitTestProc(wxInt16 x, wxInt16 y) ; - virtual wxInt16 MacControlUserPaneTrackingProc(wxInt16 x, wxInt16 y, void* actionProc) ; - virtual void MacControlUserPaneIdleProc() ; - virtual wxInt16 MacControlUserPaneKeyDownProc(wxInt16 keyCode, wxInt16 charCode, wxInt16 modifiers) ; - virtual void MacControlUserPaneActivateProc(bool activating) ; - virtual wxInt16 MacControlUserPaneFocusProc(wxInt16 action) ; - virtual void MacControlUserPaneBackgroundProc(void* info) ; -#endif - // translate wxWidgets coords into ones suitable // to be passed to CreateControl calls // @@ -253,10 +255,8 @@ public: // 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 ; } -#endif protected: // For controls like radio buttons which are genuinely composite @@ -268,9 +268,7 @@ protected: // the peer object, allowing for cleaner API support wxMacControl * m_peer ; -#if wxMAC_USE_CORE_GRAPHICS void * m_cgContextRef ; -#endif // cache the clipped rectangles within the window hierarchy void MacUpdateClippedRects() const ; @@ -285,14 +283,16 @@ protected: // true if is is not a native control but a wxWindow control bool m_macIsUserPane ; - wxBrush m_macBackgroundBrush ; // insets of the mac control from the wx top left corner wxPoint m_macTopLeftInset ; wxPoint m_macBottomRightInset ; + wxByte m_macAlpha ; wxScrollBar* m_hScrollBar ; wxScrollBar* m_vScrollBar ; + bool m_hScrollBarAlwaysShown; + bool m_vScrollBarAlwaysShown; wxString m_label ; // set to true if we do a sharp clip at the content area of this window @@ -302,18 +302,11 @@ protected: virtual bool MacIsChildOfClientArea( const wxWindow* child ) const ; + bool MacHasScrollBarCorner() const; void MacCreateScrollBars( long style ) ; void MacRepositionScrollBars() ; void MacUpdateControlFont() ; - void MacPropagateVisibilityChanged() ; - void MacPropagateEnabledStateChanged() ; - void MacPropagateHiliteChanged() ; - -#if WXWIN_COMPATIBILITY_2_4 - bool m_backgroundTransparent ; -#endif - // implement the base class pure virtuals virtual wxSize DoGetBestSize() const; virtual wxSize DoGetSizeFromClientSize( const wxSize & size ) const; @@ -345,6 +338,11 @@ private: // common part of all ctors void Init(); + // show/hide scrollbars as needed, common part of SetScrollbar() and + // AlwaysShowScrollbars() + void DoUpdateScrollbarVisibility(); + + WXEVENTHANDLERREF m_macControlEventHandler ; DECLARE_NO_COPY_CLASS(wxWindowMac)