1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/osx/nonownedwnd.h
3 // Purpose: declares wxNonOwnedWindow class
4 // Author: Stefan Csomor
8 // Copyright: (c) 2008 Stefan Csomor
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_MAC_NONOWNEDWND_H_
13 #define _WX_MAC_NONOWNEDWND_H_
15 #include "wx/window.h"
17 #include "wx/graphics.h"
19 #if wxUSE_SYSTEM_OPTIONS
20 #define wxMAC_WINDOW_PLAIN_TRANSITION wxT("mac.window-plain-transition")
23 //-----------------------------------------------------------------------------
25 //-----------------------------------------------------------------------------
27 // This class represents "non-owned" window. A window is owned by another
28 // window if it has a parent and is positioned within the parent. For example,
29 // wxFrame is non-owned, because even though it can have a parent, it's
30 // location is independent of it. This class is for internal use only, it's
31 // the base class for wxTopLevelWindow and wxPopupWindow.
33 class wxNonOwnedWindowImpl
;
35 class WXDLLIMPEXP_CORE wxNonOwnedWindow
: public wxNonOwnedWindowBase
38 // constructors and such
39 wxNonOwnedWindow() { Init(); }
41 wxNonOwnedWindow(wxWindow
*parent
,
43 const wxPoint
& pos
= wxDefaultPosition
,
44 const wxSize
& size
= wxDefaultSize
,
46 const wxString
& name
= wxPanelNameStr
)
50 (void)Create(parent
, id
, pos
, size
, style
, name
);
53 bool Create(wxWindow
*parent
,
55 const wxPoint
& pos
= wxDefaultPosition
,
56 const wxSize
& size
= wxDefaultSize
,
58 const wxString
& name
= wxPanelNameStr
);
60 bool Create(wxWindow
*parent
, WXWindow nativeWindow
);
62 virtual ~wxNonOwnedWindow();
64 virtual void SubclassWin(WXWindow nativeWindow
);
65 virtual void UnsubclassWin();
67 virtual wxPoint
GetClientAreaOrigin() const;
69 virtual double GetMagnificationFactor() const;
71 // implement base class pure virtuals
73 virtual bool SetTransparent(wxByte alpha
);
74 virtual bool CanSetTransparent();
76 virtual bool SetBackgroundStyle(wxBackgroundStyle style
);
78 virtual void Update();
80 WXWindow
GetWXWindow() const ;
81 static wxNonOwnedWindow
* GetFromWXWindow( WXWindow win
);
83 // implementation from now on
84 // --------------------------
86 // These accessors are Mac-specific and don't exist in other ports.
87 const wxRegion
& GetShape() const { return m_shape
; }
88 #if wxUSE_GRAPHICS_CONTEXT
89 const wxGraphicsPath
& GetShapePath() { return m_shapePath
; }
90 #endif // wxUSE_GRAPHICS_CONTEXT
92 // activation hooks only necessary for MDI Implementation
93 static void MacDelayedDeactivation(long timestamp
);
94 virtual void MacActivate( long timestamp
, bool inIsActivating
) ;
96 virtual void SetWindowStyleFlag(long flags
);
100 virtual bool Show( bool show
= true );
102 virtual void SetExtraStyle(long exStyle
) ;
104 virtual bool SetBackgroundColour( const wxColour
&colour
);
106 wxNonOwnedWindowImpl
* GetNonOwnedPeer() const { return m_nowpeer
; }
108 #if wxOSX_USE_COCOA_OR_IPHONE
109 // override the base class method to return an NSWindow instead of NSView
110 virtual void *OSXGetViewOrWindow() const { return GetWXWindow(); }
113 // osx specific event handling common for all osx-ports
115 virtual void HandleActivated( double timestampsec
, bool didActivate
);
116 virtual void HandleResized( double timestampsec
);
117 virtual void HandleMoved( double timestampsec
);
118 virtual void HandleResizing( double timestampsec
, wxRect
* rect
);
120 void WindowWasPainted();
122 virtual bool Destroy();
125 // common part of all ctors
128 virtual void DoGetPosition( int *x
, int *y
) const;
129 virtual void DoGetSize( int *width
, int *height
) const;
130 virtual void DoMoveWindow(int x
, int y
, int width
, int height
);
131 virtual void DoGetClientSize(int *width
, int *height
) const;
133 virtual bool OSXShowWithEffect(bool show
,
137 virtual bool DoClearShape();
138 virtual bool DoSetRegionShape(const wxRegion
& region
);
139 #if wxUSE_GRAPHICS_CONTEXT
140 virtual bool DoSetPathShape(const wxGraphicsPath
& path
);
141 #endif // wxUSE_GRAPHICS_CONTEXT
143 virtual void WillBeDestroyed();
145 wxNonOwnedWindowImpl
* m_nowpeer
;
147 // wxWindowMac* m_macFocus ;
149 static wxNonOwnedWindow
*s_macDeactivateWindow
;
152 static clock_t s_lastFlush
;
155 #if wxUSE_GRAPHICS_CONTEXT
156 wxGraphicsPath m_shapePath
;
157 #endif // wxUSE_GRAPHICS_CONTEXT
160 // list of all frames and modeless dialogs
161 extern WXDLLIMPEXP_DATA_CORE(wxWindowList
) wxModelessWindows
;
164 #endif // _WX_MAC_NONOWNEDWND_H_