Unselect all wxDataViewCtrl items when clicking outside of the item area.
[wxWidgets.git] / include / wx / osx / nonownedwnd.h
index 61caeb7d0074444f3eb652d761baa2717c6fb07c..a972612b2bb7dea4148c81e103d3b52b2d0175d1 100644 (file)
@@ -1,10 +1,10 @@
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        wx/mac/nonownedwnd.h
+// Name:        wx/osx/nonownedwnd.h
 // Purpose:     declares wxNonOwnedWindow class
 // Author:      Stefan Csomor
-// Modified by: 
+// Modified by:
 // Created:     2008-03-24
-// RCS-ID:      $Id: nonownedwnd.h 46993 2007-06-28 08:46:04Z VS $
+// RCS-ID:      $Id$
 // Copyright:   (c) 2008 Stefan Csomor
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "wx/window.h"
 
+#include "wx/graphics.h"
+
 #if wxUSE_SYSTEM_OPTIONS
-    #define wxMAC_WINDOW_PLAIN_TRANSITION _T("mac.window-plain-transition")
+    #define wxMAC_WINDOW_PLAIN_TRANSITION wxT("mac.window-plain-transition")
 #endif
 
 //-----------------------------------------------------------------------------
@@ -30,7 +32,7 @@
 
 class wxNonOwnedWindowImpl;
 
-class WXDLLIMPEXP_CORE wxNonOwnedWindow : public wxWindow
+class WXDLLIMPEXP_CORE wxNonOwnedWindow : public wxNonOwnedWindowBase
 {
 public:
     // constructors and such
@@ -55,8 +57,13 @@ public:
                 long style = 0,
                 const wxString& name = wxPanelNameStr);
 
+    bool Create(wxWindow *parent, WXWindow nativeWindow);
+
     virtual ~wxNonOwnedWindow();
 
+    virtual void SubclassWin(WXWindow nativeWindow);
+    virtual void UnsubclassWin();
+
     virtual wxPoint GetClientAreaOrigin() const;
 
     // implement base class pure virtuals
@@ -65,7 +72,7 @@ public:
     virtual bool CanSetTransparent();
 
     virtual bool SetBackgroundStyle(wxBackgroundStyle style);
-    
+
     virtual void Update();
 
     WXWindow GetWXWindow() const ;
@@ -74,36 +81,44 @@ public:
     // implementation from now on
     // --------------------------
 
-    virtual bool DoSetShape(const wxRegion& region);
+    // These accessors are Mac-specific and don't exist in other ports.
+    const wxRegion& GetShape() const { return m_shape; }
+#if wxUSE_GRAPHICS_CONTEXT
+    const wxGraphicsPath& GetShapePath() { return m_shapePath; }
+#endif // wxUSE_GRAPHICS_CONTEXT
 
     // activation hooks only necessary for MDI Implementation
     static void MacDelayedDeactivation(long timestamp);
     virtual void MacActivate( long timestamp , bool inIsActivating ) ;
 
+    virtual void SetWindowStyleFlag(long flags);
 
     virtual void Raise();
     virtual void Lower();
     virtual bool Show( bool show = true );
 
-    virtual bool ShowWithEffect(wxShowEffect effect,
-                                unsigned timeout = 0) ;
-
-    virtual bool HideWithEffect(wxShowEffect effect,
-                                unsigned timeout = 0) ;
-
     virtual void SetExtraStyle(long exStyle) ;
 
     virtual bool SetBackgroundColour( const wxColour &colour );
-    
+
     wxNonOwnedWindowImpl* GetNonOwnedPeer() const { return m_nowpeer; }
-    
+
+#if wxOSX_USE_COCOA_OR_IPHONE
+    // override the base class method to return an NSWindow instead of NSView
+    virtual void *OSXGetViewOrWindow() const { return GetWXWindow(); }
+#endif // Cocoa
+
     // osx specific event handling common for all osx-ports
-    
+
     virtual void HandleActivated( double timestampsec, bool didActivate );
     virtual void HandleResized( double timestampsec );
     virtual void HandleMoved( double timestampsec );
     virtual void HandleResizing( double timestampsec, wxRect* rect );
-        
+    
+    void WindowWasPainted();
+
+    virtual bool Destroy();
+
 protected:
     // common part of all ctors
     void Init();
@@ -113,12 +128,31 @@ protected:
     virtual void DoMoveWindow(int x, int y, int width, int height);
     virtual void DoGetClientSize(int *width, int *height) const;
 
+    virtual bool OSXShowWithEffect(bool show,
+                                   wxShowEffect effect,
+                                   unsigned timeout);
+
+    virtual bool DoClearShape();
+    virtual bool DoSetRegionShape(const wxRegion& region);
+#if wxUSE_GRAPHICS_CONTEXT
+    virtual bool DoSetPathShape(const wxGraphicsPath& path);
+#endif // wxUSE_GRAPHICS_CONTEXT
+
+    virtual void WillBeDestroyed();
+
     wxNonOwnedWindowImpl* m_nowpeer ;
 
 //    wxWindowMac* m_macFocus ;
 
     static wxNonOwnedWindow *s_macDeactivateWindow;
+
 private :
+    static clock_t s_lastFlush;
+    
+    wxRegion m_shape;
+#if wxUSE_GRAPHICS_CONTEXT
+    wxGraphicsPath m_shapePath;
+#endif // wxUSE_GRAPHICS_CONTEXT
 };
 
 // list of all frames and modeless dialogs