fix crash after destroying a default button in a backwards compatible way (patch 1727956)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@46272 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -91,16 +91,9 @@ Major new features in 2.8 release
|
|||||||
2.8.5
|
2.8.5
|
||||||
-----
|
-----
|
||||||
|
|
||||||
All:
|
|
||||||
|
|
||||||
|
|
||||||
All (Unix):
|
|
||||||
|
|
||||||
|
|
||||||
All (GUI):
|
|
||||||
|
|
||||||
|
|
||||||
wxMSW:
|
wxMSW:
|
||||||
|
|
||||||
|
- Fix crash when destroying a default button (Tim Kosse)
|
||||||
- Correct problem with page setup dialog when using landscape mode
|
- Correct problem with page setup dialog when using landscape mode
|
||||||
- Added msw.font.no-proof-quality system option, see manual for description
|
- Added msw.font.no-proof-quality system option, see manual for description
|
||||||
- Fix appearance of notebook with non-top tabs under Windows Vista
|
- Fix appearance of notebook with non-top tabs under Windows Vista
|
||||||
|
@@ -324,10 +324,27 @@ wxWindowBase::~wxWindowBase()
|
|||||||
wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent((wxWindow*)this),
|
wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent((wxWindow*)this),
|
||||||
wxTopLevelWindow);
|
wxTopLevelWindow);
|
||||||
|
|
||||||
if ( tlw && tlw->GetDefaultItem() == this )
|
if ( tlw )
|
||||||
tlw->SetDefaultItem(NULL);
|
{
|
||||||
if ( tlw && tlw->GetTmpDefaultItem() == this )
|
wxWindow* tmpDefaultItem = tlw->GetTmpDefaultItem();
|
||||||
tlw->SetTmpDefaultItem(NULL);
|
if ( tmpDefaultItem == this )
|
||||||
|
tlw->SetTmpDefaultItem(NULL);
|
||||||
|
else if ( tmpDefaultItem )
|
||||||
|
{
|
||||||
|
// A temporary default item masks the real default item, so
|
||||||
|
// temporarily unset the temporary default item so we can access the
|
||||||
|
// real default item.
|
||||||
|
tlw->SetTmpDefaultItem(NULL);
|
||||||
|
|
||||||
|
if ( tlw->GetDefaultItem() == this )
|
||||||
|
tlw->SetDefaultItem(NULL);
|
||||||
|
|
||||||
|
// Set the temporary default item back.
|
||||||
|
tlw->SetTmpDefaultItem(tmpDefaultItem);
|
||||||
|
}
|
||||||
|
else if ( tlw->GetDefaultItem() == this )
|
||||||
|
tlw->SetDefaultItem(NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset the dangling pointer our parent window may keep to us
|
// reset the dangling pointer our parent window may keep to us
|
||||||
|
Reference in New Issue
Block a user