else if ( choice->HasClientUntypedData() )
event.SetClientData( choice->GetClientData(n) );
- choice->GetEventHandler()->ProcessEvent(event);
+ choice->HandleWindowEvent(event);
}
}
m_selection_hack += count;
}
+ // We must set the selection so that it can be read back even if
+ // the user has not modified it since GTK+ will then select the
+ // first item so well return 0.
+ if ((count > 0) && (m_selection_hack==wxNOT_FOUND))
+ m_selection_hack = 0;
+
return pos - 1;
}
wxArrayString items;
wxArrayPtrVoid itemsData;
- items.Alloc(count);
- itemsData.Alloc(count);
+ items.Alloc(count - 1);
+ itemsData.Alloc(count - 1);
for ( unsigned i = 0; i < count; i++ )
{
if ( i != n )
wxChoice::DoClear();
- void ** const data = &itemsData[0];
- if ( HasClientObjectData() )
- Append(items, wx_reinterpret_cast(wxClientData **, data));
- else
- Append(items, data);
+ if ( count > 1 )
+ {
+ void ** const data = &itemsData[0];
+ if ( HasClientObjectData() )
+ Append(items, wx_reinterpret_cast(wxClientData **, data));
+ else
+ Append(items, data);
+ }
+ //else: the control is now empty, nothing to append
}
int wxChoice::FindString( const wxString &string, bool bCase ) const