wrap native TLWs so that they also appear in the tlw list
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64061 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
e17ac396d0
commit
638b3cd7a8
@ -35,6 +35,8 @@ public:
|
||||
(void)Create(parent, id, title, pos, size, style, name);
|
||||
}
|
||||
|
||||
virtual ~wxTopLevelWindowMac();
|
||||
|
||||
bool Create(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxString& title,
|
||||
@ -42,9 +44,9 @@ public:
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxDEFAULT_FRAME_STYLE,
|
||||
const wxString& name = wxFrameNameStr);
|
||||
|
||||
virtual ~wxTopLevelWindowMac();
|
||||
|
||||
|
||||
bool Create(wxWindow *parent, WXWindow nativeWindow);
|
||||
|
||||
virtual bool Destroy();
|
||||
|
||||
virtual wxPoint GetClientAreaOrigin() const;
|
||||
|
@ -45,36 +45,30 @@ wxWindow* g_MacLastWindow = NULL ;
|
||||
// wxWindowMac utility functions
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
// Find an item given the Macintosh Window Reference
|
||||
|
||||
WX_DECLARE_HASH_MAP(WXWindow, wxNonOwnedWindow*, wxPointerHash, wxPointerEqual, MacWindowMap);
|
||||
WX_DECLARE_HASH_MAP(WXWindow, wxNonOwnedWindowImpl*, wxPointerHash, wxPointerEqual, MacWindowMap);
|
||||
|
||||
static MacWindowMap wxWinMacWindowList;
|
||||
|
||||
wxNonOwnedWindow *wxFindWindowFromWXWindow(WXWindow inWindowRef)
|
||||
wxNonOwnedWindow* wxNonOwnedWindow::GetFromWXWindow( WXWindow win )
|
||||
{
|
||||
MacWindowMap::iterator node = wxWinMacWindowList.find(inWindowRef);
|
||||
wxNonOwnedWindowImpl* impl = wxNonOwnedWindowImpl::FindFromWXWindow(win);
|
||||
|
||||
return ( impl != NULL ? impl->GetWXPeer() : NULL ) ;
|
||||
}
|
||||
|
||||
wxNonOwnedWindowImpl* wxNonOwnedWindowImpl::FindFromWXWindow (WXWindow window)
|
||||
{
|
||||
MacWindowMap::iterator node = wxWinMacWindowList.find(window);
|
||||
|
||||
return (node == wxWinMacWindowList.end()) ? NULL : node->second;
|
||||
}
|
||||
|
||||
void wxAssociateWindowWithWXWindow(WXWindow inWindowRef, wxNonOwnedWindow *win) ;
|
||||
void wxAssociateWindowWithWXWindow(WXWindow inWindowRef, wxNonOwnedWindow *win)
|
||||
{
|
||||
// adding NULL WindowRef is (first) surely a result of an error and
|
||||
// nothing else :-)
|
||||
wxCHECK_RET( inWindowRef != (WXWindow) NULL, wxT("attempt to add a NULL WindowRef to window list") );
|
||||
|
||||
wxWinMacWindowList[inWindowRef] = win;
|
||||
}
|
||||
|
||||
void wxRemoveWXWindowAssociation(wxNonOwnedWindow *win) ;
|
||||
void wxRemoveWXWindowAssociation(wxNonOwnedWindow *win)
|
||||
void wxNonOwnedWindowImpl::RemoveAssociations( wxNonOwnedWindowImpl* impl)
|
||||
{
|
||||
MacWindowMap::iterator it;
|
||||
for ( it = wxWinMacWindowList.begin(); it != wxWinMacWindowList.end(); ++it )
|
||||
{
|
||||
if ( it->second == win )
|
||||
if ( it->second == impl )
|
||||
{
|
||||
wxWinMacWindowList.erase(it);
|
||||
break;
|
||||
@ -82,9 +76,13 @@ void wxRemoveWXWindowAssociation(wxNonOwnedWindow *win)
|
||||
}
|
||||
}
|
||||
|
||||
wxNonOwnedWindow* wxNonOwnedWindow::GetFromWXWindow( WXWindow win )
|
||||
void wxNonOwnedWindowImpl::Associate( WXWindow window, wxNonOwnedWindowImpl *impl )
|
||||
{
|
||||
return wxFindWindowFromWXWindow( win );
|
||||
// adding NULL WindowRef is (first) surely a result of an error and
|
||||
// nothing else :-)
|
||||
wxCHECK_RET( window != (WXWindow) NULL, wxT("attempt to add a NULL WindowRef to window list") );
|
||||
|
||||
wxWinMacWindowList[window] = impl;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -132,7 +130,7 @@ bool wxNonOwnedWindow::Create(wxWindow *parent,
|
||||
int h = HeightDefault(size.y);
|
||||
|
||||
m_nowpeer = wxNonOwnedWindowImpl::CreateNonOwnedWindow(this, parent, wxPoint(x,y) , wxSize(w,h) , style , GetExtraStyle(), name );
|
||||
wxAssociateWindowWithWXWindow( m_nowpeer->GetWXWindow() , this ) ;
|
||||
wxNonOwnedWindowImpl::Associate( m_nowpeer->GetWXWindow() , m_nowpeer ) ;
|
||||
m_peer = wxWidgetImpl::CreateContentView(this);
|
||||
|
||||
DoSetWindowVariant( m_windowVariant ) ;
|
||||
@ -152,7 +150,7 @@ bool wxNonOwnedWindow::Create(wxWindow *parent, WXWindow nativeWindow)
|
||||
{
|
||||
m_nowpeer = wxNonOwnedWindowImpl::CreateNonOwnedWindow(this, parent, nativeWindow );
|
||||
m_isNativeWindowWrapper = true;
|
||||
wxAssociateWindowWithWXWindow( m_nowpeer->GetWXWindow() , this ) ;
|
||||
wxNonOwnedWindowImpl::Associate( m_nowpeer->GetWXWindow() , m_nowpeer ) ;
|
||||
m_peer = wxWidgetImpl::CreateContentView(this);
|
||||
|
||||
if ( parent )
|
||||
@ -165,7 +163,7 @@ wxNonOwnedWindow::~wxNonOwnedWindow()
|
||||
{
|
||||
SendDestroyEvent();
|
||||
|
||||
wxRemoveWXWindowAssociation( this ) ;
|
||||
wxNonOwnedWindowImpl::RemoveAssociations(m_nowpeer) ;
|
||||
|
||||
DestroyChildren();
|
||||
|
||||
|
@ -86,6 +86,17 @@ bool wxTopLevelWindowMac::Create(wxWindow *parent,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wxTopLevelWindowMac::Create(wxWindow *parent,
|
||||
WXWindow nativeWindow)
|
||||
{
|
||||
if ( !wxNonOwnedWindow::Create(parent, nativeWindow ) )
|
||||
return false;
|
||||
|
||||
wxTopLevelWindows.Append(this);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
wxTopLevelWindowMac::~wxTopLevelWindowMac()
|
||||
{
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user