| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/osx/window.h
 
- // Purpose:     wxWindowMac class
 
- // Author:      Stefan Csomor
 
- // Modified by:
 
- // Created:     1998-01-01
 
- // Copyright:   (c) Stefan Csomor
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_WINDOW_H_
 
- #define _WX_WINDOW_H_
 
- #include "wx/brush.h"
 
- #include "wx/dc.h"
 
- class WXDLLIMPEXP_FWD_CORE wxButton;
 
- class WXDLLIMPEXP_FWD_CORE wxScrollBar;
 
- class WXDLLIMPEXP_FWD_CORE wxPanel;
 
- class WXDLLIMPEXP_FWD_CORE wxNonOwnedWindow;
 
- #if wxOSX_USE_CARBON
 
-     class WXDLLIMPEXP_FWD_CORE wxMacControl ;
 
-     typedef wxMacControl wxOSXWidgetImpl;
 
- #elif wxOSX_USE_COCOA_OR_IPHONE
 
-     class WXDLLIMPEXP_FWD_CORE wxWidgetImpl ;
 
-     typedef wxWidgetImpl wxOSXWidgetImpl;
 
- #endif
 
- class WXDLLIMPEXP_CORE wxWindowMac: public wxWindowBase
 
- {
 
-     DECLARE_DYNAMIC_CLASS(wxWindowMac)
 
-     friend class wxDC;
 
-     friend class wxPaintDC;
 
- public:
 
-     wxWindowMac();
 
-     wxWindowMac( wxWindowMac *parent,
 
-                 wxWindowID id,
 
-                 const wxPoint& pos = wxDefaultPosition,
 
-                 const wxSize& size = wxDefaultSize,
 
-                 long style = 0,
 
-                 const wxString& name = wxPanelNameStr );
 
-     virtual ~wxWindowMac();
 
-     bool Create( wxWindowMac *parent,
 
-                 wxWindowID id,
 
-                 const wxPoint& pos = wxDefaultPosition,
 
-                 const wxSize& size = wxDefaultSize,
 
-                 long style = 0,
 
-                 const wxString& name = wxPanelNameStr );
 
-     virtual void SendSizeEvent(int flags = 0);
 
-     
 
-     // implement base class pure virtuals
 
-     virtual void SetLabel( const wxString& label );
 
-     virtual wxString GetLabel() const;
 
-     virtual void Raise();
 
-     virtual void Lower();
 
-     virtual bool Show( bool show = true );
 
-     virtual bool ShowWithEffect(wxShowEffect effect,
 
-                                 unsigned timeout = 0)
 
-     {
 
-         return OSXShowWithEffect(true, effect, timeout);
 
-     }
 
-     virtual bool HideWithEffect(wxShowEffect effect,
 
-                                 unsigned timeout = 0)
 
-     {
 
-         return OSXShowWithEffect(false, effect, timeout);
 
-     }
 
-     virtual bool IsShownOnScreen() const;
 
-     virtual void SetFocus();
 
-     virtual void WarpPointer( int x, int y );
 
-     virtual void Refresh( bool eraseBackground = true,
 
-                           const wxRect *rect = NULL );
 
-     virtual void Update() ;
 
-     virtual void ClearBackground();
 
-     virtual bool SetCursor( const wxCursor &cursor );
 
-     virtual bool SetFont( const wxFont &font );
 
-     virtual bool SetBackgroundColour( const wxColour &colour );
 
-     virtual bool SetForegroundColour( const wxColour &colour );
 
-     virtual bool SetBackgroundStyle(wxBackgroundStyle style);
 
-     virtual int GetCharHeight() const;
 
-     virtual int GetCharWidth() const;
 
-     
 
- 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 );
 
-     virtual int GetScrollPos( int orient ) const;
 
-     virtual int GetScrollThumb( int orient ) const;
 
-     virtual int GetScrollRange( int orient ) const;
 
-     virtual void ScrollWindow( int dx, int dy,
 
-                                const wxRect* rect = 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_HOTKEY && wxOSX_USE_COCOA_OR_CARBON
 
-     // hot keys (system wide accelerators)
 
-     // -----------------------------------
 
-     
 
-     virtual bool RegisterHotKey(int hotkeyId, int modifiers, int keycode);
 
-     virtual bool UnregisterHotKey(int hotkeyId);
 
- #endif // wxUSE_HOTKEY
 
-     
 
- #if wxUSE_DRAG_AND_DROP
 
-     virtual void SetDropTarget( wxDropTarget *dropTarget );
 
- #endif
 
-     // Accept files for dragging
 
-     virtual void DragAcceptFiles( bool accept );
 
-     // implementation from now on
 
-     // --------------------------
 
-     void MacClientToRootWindow( int *x , int *y ) const;
 
-     void MacWindowToRootWindow( int *x , int *y ) const;
 
-     void MacRootWindowToWindow( int *x , int *y ) const;
 
-     virtual wxString MacGetToolTipString( wxPoint &where );
 
-     // simple accessors
 
-     // ----------------
 
-     virtual WXWidget GetHandle() const;
 
-     virtual bool SetTransparent(wxByte alpha);
 
-     virtual bool CanSetTransparent();
 
-     virtual wxByte GetTransparent() const ;
 
-     // event handlers
 
-     // --------------
 
-     void OnMouseEvent( wxMouseEvent &event );
 
-     void MacOnScroll( wxScrollEvent&event );
 
-     virtual bool AcceptsFocus() const;
 
-     virtual bool IsDoubleBuffered() const { return true; }
 
- public:
 
-     static long         MacRemoveBordersFromStyle( long style ) ;
 
- public:
 
-     // For implementation purposes:
 
-     // sometimes decorations make the client area smaller
 
-     virtual wxPoint GetClientAreaOrigin() const;
 
-     wxWindowMac *FindItem(long id) const;
 
-     wxWindowMac *FindItemByHWND(WXHWND hWnd, bool controlOnly = false) const;
 
-     virtual void        TriggerScrollEvent( wxEventType scrollEvent ) ;
 
-     // this should not be overridden in classes above wxWindowMac
 
-     // because it is called from its destructor via DeleteChildren
 
-     virtual void        RemoveChild( wxWindowBase *child );
 
-     virtual bool        MacDoRedraw( long time ) ;
 
-     virtual void        MacPaintChildrenBorders();
 
-     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
 
-     void                MacInvalidateBorders() ;
 
-     WXWindow            MacGetTopLevelWindowRef() const ;
 
-     wxNonOwnedWindow*   MacGetTopLevelWindow() const ;
 
-     virtual long        MacGetWXBorderSize() const;
 
-     virtual long        MacGetLeftBorderSize() const ;
 
-     virtual long        MacGetRightBorderSize() const ;
 
-     virtual long        MacGetTopBorderSize() const ;
 
-     virtual long        MacGetBottomBorderSize() const ;
 
-     virtual void        MacSuperChangedPosition() ;
 
-     // absolute coordinates of this window's root have changed
 
-     virtual void        MacTopLevelWindowChangedPosition() ;
 
-     virtual void        MacChildAdded() ;
 
-     virtual void        MacVisibilityChanged() ;
 
-     virtual void        MacEnabledStateChanged() ;
 
-     virtual void        MacHiliteChanged() ;
 
-     virtual wxInt32     MacControlHit( WXEVENTHANDLERREF handler , WXEVENTREF event ) ;
 
-     bool                MacIsReallyEnabled() ;
 
-     bool                MacIsReallyHilited() ;
 
- #if WXWIN_COMPATIBILITY_2_8
 
-     bool                MacIsUserPane();
 
- #endif
 
-     bool                MacIsUserPane() const;
 
-     virtual bool        MacSetupCursor( const wxPoint& pt ) ;
 
-     // 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
 
-     const wxRegion&     MacGetVisibleRegion( bool includeOuterStructures = false ) ;
 
-     // returns true if children have to clipped to the content area
 
-     // (e.g., scrolled windows)
 
-     bool                MacClipChildren() const { return m_clipChildren ; }
 
-     void                MacSetClipChildren( bool clip ) { m_clipChildren = clip ; }
 
-     // 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 wxWindow* sb ) const
 
-     { return ((wxWindow*)m_hScrollBar == sb || (wxWindow*)m_vScrollBar == sb) ; }
 
-     virtual bool IsClientAreaChild(const wxWindow *child) const
 
-     {
 
-         return !MacIsWindowScrollbar(child) && !((wxWindow*)m_growBox==child) &&
 
-                wxWindowBase::IsClientAreaChild(child);
 
-     }
 
-     void                MacPostControlCreate(const wxPoint& pos, const wxSize& size) ;
 
-     wxList&             GetSubcontrols() { return m_subControls; }
 
-     // translate wxWidgets coords into ones suitable
 
-     // to be passed to CreateControl calls
 
-     //
 
-     // returns true if non-default coords are returned, false otherwise
 
-     bool                MacGetBoundsForControl(const wxPoint& pos,
 
-                                            const wxSize& size,
 
-                                            int& x, int& y,
 
-                                            int& w, int& h , bool adjustForOrigin ) const ;
 
-     // the 'true' OS level control for this wxWindow
 
-     wxOSXWidgetImpl*    GetPeer() const;
 
-     
 
-     // optimization to avoid creating a user pane in wxWindow::Create if we already know
 
-     // we will replace it with our own peer
 
-     void                DontCreatePeer();
 
-     // return true unless DontCreatePeer() had been called
 
-     bool                ShouldCreatePeer() const;
 
-     // sets the native implementation wrapper, can replace an existing peer, use peer = NULL to 
 
-     // release existing peer
 
-     void                SetPeer(wxOSXWidgetImpl* peer);
 
-     
 
-     // wraps the already existing peer with the wrapper
 
-     void                SetWrappingPeer(wxOSXWidgetImpl* wrapper);
 
- #if wxOSX_USE_COCOA_OR_IPHONE
 
-     // the NSView or NSWindow of this window: can be used for both child and
 
-     // non-owned windows
 
-     //
 
-     // this is useful for a few Cocoa function which can work with either views
 
-     // or windows indiscriminately, e.g. for setting NSViewAnimationTargetKey
 
-     virtual void *OSXGetViewOrWindow() const;
 
- #endif // Cocoa
 
-     void *              MacGetCGContextRef() { return m_cgContextRef ; }
 
-     void                MacSetCGContextRef(void * cg) { m_cgContextRef = cg ; }
 
-     // osx specific event handling common for all osx-ports
 
-     virtual bool        OSXHandleClicked( double timestampsec );
 
-     virtual bool        OSXHandleKeyEvent( wxKeyEvent& event );
 
-     virtual void        OSXSimulateFocusEvents();
 
-     bool                IsNativeWindowWrapper() const { return m_isNativeWindowWrapper; }
 
-     
 
-     double              GetContentScaleFactor() const ;
 
-     
 
-     // internal response to size events
 
-     virtual void MacOnInternalSize() {}
 
- protected:
 
-     // For controls like radio buttons which are genuinely composite
 
-     wxList              m_subControls;
 
-     // the peer object, allowing for cleaner API support
 
-     void *              m_cgContextRef ;
 
-     // 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 ;
 
-     // 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;
 
-     wxWindow*           m_growBox ;
 
-     wxString            m_label ;
 
-     bool                m_isNativeWindowWrapper;
 
-     // set to 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 ;
 
-     bool                MacHasScrollBarCorner() const;
 
-     void                MacCreateScrollBars( long style ) ;
 
-     void                MacRepositionScrollBars() ;
 
-     void                MacUpdateControlFont() ;
 
-     // implement the base class pure virtuals
 
-     virtual void DoGetTextExtent(const wxString& string,
 
-                                  int *x, int *y,
 
-                                  int *descent = NULL,
 
-                                  int *externalLeading = NULL,
 
-                                  const wxFont *theFont = NULL ) const;
 
-     virtual void DoEnable( bool enable );
 
- #if wxUSE_MENUS
 
-     virtual bool DoPopupMenu( wxMenu *menu, int x, int y );
 
- #endif
 
-     virtual void DoFreeze();
 
-     virtual void DoThaw();
 
-     virtual wxSize DoGetBestSize() const;
 
-     virtual wxSize DoGetSizeFromClientSize( const wxSize & size ) const;
 
-     virtual void DoClientToScreen( int *x, int *y ) const;
 
-     virtual void DoScreenToClient( int *x, int *y ) const;
 
-     virtual void DoGetPosition( int *x, int *y ) const;
 
-     virtual void DoGetSize( int *width, int *height ) const;
 
-     virtual void DoGetClientSize( int *width, int *height ) const;
 
-     virtual void DoSetSize(int x, int y,
 
-                            int width, int height,
 
-                            int sizeFlags = wxSIZE_AUTO);
 
-     virtual void DoSetClientSize(int width, int height);
 
-     virtual void DoCaptureMouse();
 
-     virtual void DoReleaseMouse();
 
-     // move the window to the specified location and resize it: this is called
 
-     // from both DoSetSize() and DoSetClientSize() and would usually just call
 
-     // ::MoveWindow() except for composite controls which will want to arrange
 
-     // themselves inside the given rectangle
 
-     virtual void DoMoveWindow( int x, int y, int width, int height );
 
-     virtual void DoSetWindowVariant( wxWindowVariant variant );
 
- #if wxUSE_TOOLTIPS
 
-     virtual void DoSetToolTip( wxToolTip *tip );
 
- #endif
 
-     // common part of Show/HideWithEffect()
 
-     virtual bool OSXShowWithEffect(bool show,
 
-                                    wxShowEffect effect,
 
-                                    unsigned timeout);
 
- private:
 
-     wxOSXWidgetImpl *   m_peer ;
 
-     // common part of all ctors
 
-     void Init();
 
-     // show/hide scrollbars as needed, common part of SetScrollbar() and
 
-     // AlwaysShowScrollbars()
 
-     void DoUpdateScrollbarVisibility();
 
-     wxDECLARE_NO_COPY_CLASS(wxWindowMac);
 
-     DECLARE_EVENT_TABLE()
 
- };
 
- #endif // _WX_WINDOW_H_
 
 
  |