X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ed2c31509f12dd24d09e0d3e081a2372074f8063..dd12ce22d806e6a9c40cf7bdfddbb237cd55b0ca:/src/mac/carbon/toplevel.cpp diff --git a/src/mac/carbon/toplevel.cpp b/src/mac/carbon/toplevel.cpp index a794c8077a..a54c02df21 100644 --- a/src/mac/carbon/toplevel.cpp +++ b/src/mac/carbon/toplevel.cpp @@ -741,6 +741,7 @@ DEFINE_ONE_SHOT_HANDLER_GETTER( wxMacTopLevelEventHandler ) // Find an item given the Macintosh Window Reference +#if KEY_wxList_DEPRECATED wxList wxWinMacWindowList(wxKEY_INTEGER); wxTopLevelWindowMac *wxFindWinFromMacWindow(WindowRef inWindowRef) { @@ -766,7 +767,43 @@ void wxRemoveMacWindowAssociation(wxTopLevelWindowMac *win) { wxWinMacWindowList.DeleteObject(win); } +#else + +WX_DECLARE_HASH_MAP(WindowRef, wxTopLevelWindowMac*, wxPointerHash, wxPointerEqual, MacWindowMap); + +static MacWindowMap wxWinMacWindowList; + +wxTopLevelWindowMac *wxFindWinFromMacWindow(WindowRef inWindowRef) +{ + MacWindowMap::iterator node = wxWinMacWindowList.find(inWindowRef); + + return (node == wxWinMacWindowList.end()) ? NULL : node->second; +} + +void wxAssociateWinWithMacWindow(WindowRef inWindowRef, wxTopLevelWindowMac *win) ; +void wxAssociateWinWithMacWindow(WindowRef inWindowRef, wxTopLevelWindowMac *win) +{ + // adding NULL WindowRef is (first) surely a result of an error and + // nothing else :-) + wxCHECK_RET( inWindowRef != (WindowRef) NULL, wxT("attempt to add a NULL WindowRef to window list") ); + wxWinMacWindowList[inWindowRef] = win; +} + +void wxRemoveMacWindowAssociation(wxTopLevelWindowMac *win) ; +void wxRemoveMacWindowAssociation(wxTopLevelWindowMac *win) +{ + MacWindowMap::iterator it; + for ( it = wxWinMacWindowList.begin(); it != wxWinMacWindowList.end(); ++it ) + { + if ( it->second == win ) + { + wxWinMacWindowList.erase(it); + break; + } + } +} +#endif // deprecated wxList // ---------------------------------------------------------------------------- // wxTopLevelWindowMac creation @@ -948,6 +985,14 @@ void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title, int x = (int)pos.x; int y = (int)pos.y; + + wxRect display = wxGetClientDisplayRect() ; + + if ( x == wxDefaultPosition.x ) + x = display.x ; + + if ( y == wxDefaultPosition.y ) + y = display.y ; int w = WidthDefault(size.x); int h = HeightDefault(size.y);