X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/71e030352d74e4e6aed28cfcb0ea6edf3d17af6e..abfcca57dd0d805ceec9e19c4be207614d79252a:/src/msw/window.cpp diff --git a/src/msw/window.cpp b/src/msw/window.cpp index dc8a956358..fa407353a8 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -118,7 +118,6 @@ #endif #endif - // --------------------------------------------------------------------------- // global variables // --------------------------------------------------------------------------- @@ -2594,14 +2593,11 @@ long wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam // wxWindow <-> HWND map // ---------------------------------------------------------------------------- -wxList *wxWinHandleList = NULL; +wxWinHashTable *wxWinHandleHash = NULL; wxWindow *wxFindWinFromHandle(WXHWND hWnd) { - wxNode *node = wxWinHandleList->Find((long)hWnd); - if ( !node ) - return NULL; - return (wxWindow *)node->Data(); + return wxWinHandleHash->Get((long)hWnd); } void wxAssociateWinWithHandle(HWND hWnd, wxWindowMSW *win) @@ -2622,13 +2618,13 @@ void wxAssociateWinWithHandle(HWND hWnd, wxWindowMSW *win) #endif // __WXDEBUG__ if (!oldWin) { - wxWinHandleList->Append((long)hWnd, win); + wxWinHandleHash->Put((long)hWnd, win); } } void wxRemoveHandleAssociation(wxWindowMSW *win) { - wxWinHandleList->DeleteObject(win); + wxWinHandleHash->Delete((long)win->GetHWND()); } // ---------------------------------------------------------------------------- @@ -3526,7 +3522,7 @@ bool wxWindowMSW::HandleGetMinMaxInfo(void *mmInfo) bool wxWindowMSW::HandleCommand(WXWORD id, WXWORD cmd, WXHWND control) { #if wxUSE_MENUS_NATIVE - if ( wxCurrentPopupMenu ) + if ( !cmd && wxCurrentPopupMenu ) { wxMenu *popupMenu = wxCurrentPopupMenu; wxCurrentPopupMenu = NULL; @@ -3535,14 +3531,14 @@ bool wxWindowMSW::HandleCommand(WXWORD id, WXWORD cmd, WXHWND control) } #endif // wxUSE_MENUS_NATIVE - wxWindow *win = (wxWindow*) NULL; + wxWindow *win = NULL; if ( cmd == 0 || cmd == 1 ) // menu or accel - use id { // must cast to a signed type before comparing with other ids! win = FindItem((signed short)id); } - if (!win && control) + if ( !win && control ) { // find it from HWND - this works even with the broken programs using // the same ids for different controls