The issue is in the file source/tools/atlas/AtlasUI/CustomControls/EditableListCtrl/QuickComboBox.cpp, in this method:
void QuickComboBox::OnKillFocus(wxFocusEvent& event)
{
// We need to test whether there's actually a window receiving focus;
// otherwise it tries to destroy the control while wx is focusing
// on the text-input box, and everything crashes.
if (event.GetWindow())
{
GetValidator()->TransferFromWindow();
Destroy();
}
}
It appears that under Linux, event.GetWindow() returns NULL so the control can't lose focus and as a result the validator never gets triggered and the value isn't stored. If I leave the if statement out, I don't get a crash like it's suggested in the comment, though that may not be the case on other platforms.
Isn't it better and safer if we just force the focus to the parent window instead? i.e.:
void QuickComboBox::OnKillFocus(wxFocusEvent& event)
{
GetValidator()->TransferFromWindow();
GetParent()->SetFocus();
Destroy();
}
This solves zoot's bug, but does it work around the crashing issue?Edit: This solution seems to mess it up in other ways. Sigh.
Edited by myconid, 29 June 2012 - 06:42 PM.













