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:
@@ -35,6 +35,8 @@ public:
|
|||||||
(void)Create(parent, id, title, pos, size, style, name);
|
(void)Create(parent, id, title, pos, size, style, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual ~wxTopLevelWindowMac();
|
||||||
|
|
||||||
bool Create(wxWindow *parent,
|
bool Create(wxWindow *parent,
|
||||||
wxWindowID id,
|
wxWindowID id,
|
||||||
const wxString& title,
|
const wxString& title,
|
||||||
@@ -42,9 +44,9 @@ public:
|
|||||||
const wxSize& size = wxDefaultSize,
|
const wxSize& size = wxDefaultSize,
|
||||||
long style = wxDEFAULT_FRAME_STYLE,
|
long style = wxDEFAULT_FRAME_STYLE,
|
||||||
const wxString& name = wxFrameNameStr);
|
const wxString& name = wxFrameNameStr);
|
||||||
|
|
||||||
virtual ~wxTopLevelWindowMac();
|
bool Create(wxWindow *parent, WXWindow nativeWindow);
|
||||||
|
|
||||||
virtual bool Destroy();
|
virtual bool Destroy();
|
||||||
|
|
||||||
virtual wxPoint GetClientAreaOrigin() const;
|
virtual wxPoint GetClientAreaOrigin() const;
|
||||||
|
@@ -45,36 +45,30 @@ wxWindow* g_MacLastWindow = NULL ;
|
|||||||
// wxWindowMac utility functions
|
// wxWindowMac utility functions
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
// Find an item given the Macintosh Window Reference
|
WX_DECLARE_HASH_MAP(WXWindow, wxNonOwnedWindowImpl*, wxPointerHash, wxPointerEqual, MacWindowMap);
|
||||||
|
|
||||||
WX_DECLARE_HASH_MAP(WXWindow, wxNonOwnedWindow*, wxPointerHash, wxPointerEqual, MacWindowMap);
|
|
||||||
|
|
||||||
static MacWindowMap wxWinMacWindowList;
|
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;
|
return (node == wxWinMacWindowList.end()) ? NULL : node->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxAssociateWindowWithWXWindow(WXWindow inWindowRef, wxNonOwnedWindow *win) ;
|
void wxNonOwnedWindowImpl::RemoveAssociations( wxNonOwnedWindowImpl* impl)
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
MacWindowMap::iterator it;
|
MacWindowMap::iterator it;
|
||||||
for ( it = wxWinMacWindowList.begin(); it != wxWinMacWindowList.end(); ++it )
|
for ( it = wxWinMacWindowList.begin(); it != wxWinMacWindowList.end(); ++it )
|
||||||
{
|
{
|
||||||
if ( it->second == win )
|
if ( it->second == impl )
|
||||||
{
|
{
|
||||||
wxWinMacWindowList.erase(it);
|
wxWinMacWindowList.erase(it);
|
||||||
break;
|
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);
|
int h = HeightDefault(size.y);
|
||||||
|
|
||||||
m_nowpeer = wxNonOwnedWindowImpl::CreateNonOwnedWindow(this, parent, wxPoint(x,y) , wxSize(w,h) , style , GetExtraStyle(), name );
|
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);
|
m_peer = wxWidgetImpl::CreateContentView(this);
|
||||||
|
|
||||||
DoSetWindowVariant( m_windowVariant ) ;
|
DoSetWindowVariant( m_windowVariant ) ;
|
||||||
@@ -152,7 +150,7 @@ bool wxNonOwnedWindow::Create(wxWindow *parent, WXWindow nativeWindow)
|
|||||||
{
|
{
|
||||||
m_nowpeer = wxNonOwnedWindowImpl::CreateNonOwnedWindow(this, parent, nativeWindow );
|
m_nowpeer = wxNonOwnedWindowImpl::CreateNonOwnedWindow(this, parent, nativeWindow );
|
||||||
m_isNativeWindowWrapper = true;
|
m_isNativeWindowWrapper = true;
|
||||||
wxAssociateWindowWithWXWindow( m_nowpeer->GetWXWindow() , this ) ;
|
wxNonOwnedWindowImpl::Associate( m_nowpeer->GetWXWindow() , m_nowpeer ) ;
|
||||||
m_peer = wxWidgetImpl::CreateContentView(this);
|
m_peer = wxWidgetImpl::CreateContentView(this);
|
||||||
|
|
||||||
if ( parent )
|
if ( parent )
|
||||||
@@ -165,7 +163,7 @@ wxNonOwnedWindow::~wxNonOwnedWindow()
|
|||||||
{
|
{
|
||||||
SendDestroyEvent();
|
SendDestroyEvent();
|
||||||
|
|
||||||
wxRemoveWXWindowAssociation( this ) ;
|
wxNonOwnedWindowImpl::RemoveAssociations(m_nowpeer) ;
|
||||||
|
|
||||||
DestroyChildren();
|
DestroyChildren();
|
||||||
|
|
||||||
|
@@ -86,6 +86,17 @@ bool wxTopLevelWindowMac::Create(wxWindow *parent,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxTopLevelWindowMac::Create(wxWindow *parent,
|
||||||
|
WXWindow nativeWindow)
|
||||||
|
{
|
||||||
|
if ( !wxNonOwnedWindow::Create(parent, nativeWindow ) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
wxTopLevelWindows.Append(this);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
wxTopLevelWindowMac::~wxTopLevelWindowMac()
|
wxTopLevelWindowMac::~wxTopLevelWindowMac()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user