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:
@@ -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,15 +1688,15 @@ 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;
|
||||||
m_pDropTarget = NULL;
|
m_pDropTarget = NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user