1) now associated drop target is deleted (memory/resource leak corrected)

2) added wxCHECK( hWnd != NULL ) to wxAssociateWinWithHandle


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1998-05-27 23:36:40 +00:00
parent d8b98f009e
commit 195896c792

View File

@@ -303,8 +303,6 @@ wxWindow::~wxWindow(void)
// wxWnd // wxWnd
MSWDetachWindowMenu(); MSWDetachWindowMenu();
wxRemoveHandleAssociation(this);
// TODO for backward compatibility // TODO for backward compatibility
#if 0 #if 0
// WX_CANVAS // WX_CANVAS
@@ -325,6 +323,8 @@ wxWindow::~wxWindow(void)
if (m_hWnd) if (m_hWnd)
::DestroyWindow((HWND)m_hWnd); ::DestroyWindow((HWND)m_hWnd);
wxRemoveHandleAssociation(this);
m_hWnd = 0; m_hWnd = 0;
#ifndef __WIN32__ #ifndef __WIN32__
if (m_globalHandle) if (m_globalHandle)
@@ -566,7 +566,11 @@ wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler)
void wxWindow::SetDropTarget(wxDropTarget *pDropTarget) void wxWindow::SetDropTarget(wxDropTarget *pDropTarget)
{ {
DELETEP(m_pDropTarget); if ( m_pDropTarget != 0 ) {
m_pDropTarget->Revoke(m_hWnd);
delete m_pDropTarget;
}
m_pDropTarget = pDropTarget; m_pDropTarget = pDropTarget;
if ( m_pDropTarget != 0 ) if ( m_pDropTarget != 0 )
m_pDropTarget->Register(m_hWnd); m_pDropTarget->Register(m_hWnd);
@@ -1538,6 +1542,10 @@ wxWindow *wxFindWinFromHandle(WXHWND hWnd)
void wxAssociateWinWithHandle(HWND hWnd, wxWindow *win) void wxAssociateWinWithHandle(HWND hWnd, wxWindow *win)
{ {
// adding NULL hWnd is (first) surely a result of an error and
// (secondly) breaks menu command processing
wxCHECK( hWnd != NULL );
if ( !wxWinHandleList->Find((long)hWnd) ) if ( !wxWinHandleList->Find((long)hWnd) )
wxWinHandleList->Append((long)hWnd, win); wxWinHandleList->Append((long)hWnd, win);
} }
@@ -1680,9 +1688,9 @@ bool wxWindow::MSWOnDestroy(void)
#if DEBUG > 1 #if DEBUG > 1
wxDebugMsg("wxWindow::MSWOnDestroy %d\n", handle); wxDebugMsg("wxWindow::MSWOnDestroy %d\n", handle);
#endif #endif
// delete our log target if we've got one // delete our drop target if we've got one
#if USE_DRAG_AND_DROP #if USE_DRAG_AND_DROP
if ( m_pDropTarget != 0 ) { if ( m_pDropTarget != NULL ) {
m_pDropTarget->Revoke(m_hWnd); m_pDropTarget->Revoke(m_hWnd);
delete m_pDropTarget; delete m_pDropTarget;