I have hit another segfault while destroying dropdown widgets. This time, it is due to the internal focus handler being automatically destroyed by DropDown::~DropDrow yet still used later by the inherited destructors. So I attach a new patch. In addition to the bugfix contained in the previous patch, it removes the internal focus handler while it is still alive.
--- src/widgets/dropdown.cpp.old 2007-06-16 15:36:56.000000000 +0200 +++ src/widgets/dropdown.cpp 2007-06-16 17:02:50.000000000 +0200 @@ -123,25 +123,27 @@ DropDown::~DropDown() { - if (mInternalScrollArea) + if (widgetExists(mListBox)) { - delete mScrollArea; + mListBox->removeActionListener(this); } - if (mInternalListBox) + if (mScrollArea != NULL) { - delete mListBox; + mScrollArea->removeDeathListener(this); } - if (widgetExists(mListBox)) + if (mInternalScrollArea) { - mListBox->removeActionListener(this); + delete mScrollArea; } - if (mScrollArea != NULL) + if (mInternalListBox) { - mScrollArea->removeDeathListener(this); + delete mListBox; } + + setInternalFocusHandler(NULL); } void DropDown::draw(Graphics* graphics)