]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/osx/window.h
Add wxPanel::SetBackgroundBitmap().
[wxWidgets.git] / include / wx / osx / window.h
index 7afe50d61a3cc9a6c28a32e50f69a78ae714c4b3..414bc6844c9388b7a8ca1558d6f4cd56aa067b31 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        include/wx/mac/carbon/window.h
+// Name:        wx/osx/window.h
 // Purpose:     wxWindowMac class
 // Author:      Stefan Csomor
 // Modified by:
@@ -63,6 +63,16 @@ public:
     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;
 
@@ -81,6 +91,8 @@ public:
     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;
 
@@ -144,8 +156,6 @@ public:
     static long         MacRemoveBordersFromStyle( long style ) ;
 
 public:
-    void OnInternalIdle();
-
     // For implementation purposes:
     // sometimes decorations make the client area smaller
     virtual wxPoint GetClientAreaOrigin() const;
@@ -170,6 +180,7 @@ public:
     WXWindow            MacGetTopLevelWindowRef() const ;
     wxNonOwnedWindow*   MacGetTopLevelWindow() const ;
 
+    virtual long        MacGetWXBorderSize() const;
     virtual long        MacGetLeftBorderSize() const ;
     virtual long        MacGetRightBorderSize() const ;
     virtual long        MacGetTopBorderSize() const ;
@@ -190,9 +201,9 @@ public:
     bool                MacIsReallyHilited() ;
 
 #if WXWIN_COMPATIBILITY_2_8
-    bool                MacIsUserPane() { return m_macIsUserPane; }
+    bool                MacIsUserPane();
 #endif
-    bool                MacIsUserPane() const { return m_macIsUserPane; }
+    bool                MacIsUserPane() const;
 
     virtual bool        MacSetupCursor( const wxPoint& pt ) ;
 
@@ -218,7 +229,7 @@ public:
     { return ((wxWindow*)m_hScrollBar == sb || (wxWindow*)m_vScrollBar == sb) ; }
     virtual bool IsClientAreaChild(const wxWindow *child) const
     {
-        return !MacIsWindowScrollbar(child) &&
+        return !MacIsWindowScrollbar(child) && !((wxWindow*)m_growBox==child) &&
                wxWindowBase::IsClientAreaChild(child);
     }
 
@@ -235,7 +246,27 @@ public:
                                            int& w, int& h , bool adjustForOrigin ) const ;
 
     // the 'true' OS level control for this wxWindow
-    wxOSXWidgetImpl*       GetPeer() const { return m_peer ; }
+    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();
+    
+    // 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 { return GetHandle(); }
+#endif // Cocoa
 
     void *              MacGetCGContextRef() { return m_cgContextRef ; }
     void                MacSetCGContextRef(void * cg) { m_cgContextRef = cg ; }
@@ -244,12 +275,16 @@ public:
 
     virtual bool        OSXHandleClicked( double timestampsec );
     virtual bool        OSXHandleKeyEvent( wxKeyEvent& event );
+
+    bool                IsNativeWindowWrapper() const { return m_isNativeWindowWrapper; }
+    
+    float               GetContentScaleFactor() const ;
+    
 protected:
     // For controls like radio buttons which are genuinely composite
     wxList              m_subControls;
 
     // the peer object, allowing for cleaner API support
-    wxOSXWidgetImpl *   m_peer ;
 
     void *              m_cgContextRef ;
 
@@ -264,9 +299,6 @@ protected:
     mutable wxRegion    m_cachedClippedRegion ;
     mutable wxRegion    m_cachedClippedClientRegion ;
 
-    // true if is is not a native control but a wxWindow control
-    bool                m_macIsUserPane ;
-
     // insets of the mac control from the wx top left corner
     wxPoint             m_macTopLeftInset ;
     wxPoint             m_macBottomRightInset ;
@@ -276,9 +308,11 @@ protected:
     wxScrollBar*        m_vScrollBar ;
     bool                m_hScrollBarAlwaysShown;
     bool                m_vScrollBarAlwaysShown;
-    wxPanel*            m_growBox ;
+    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...
@@ -332,7 +366,13 @@ protected:
     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();
 
@@ -340,7 +380,6 @@ private:
     // AlwaysShowScrollbars()
     void DoUpdateScrollbarVisibility();
 
-
     wxDECLARE_NO_COPY_CLASS(wxWindowMac);
     DECLARE_EVENT_TABLE()
 };