{
wxOwnerDrawnComboBox* combo = (wxOwnerDrawnComboBox*) m_combo;
- wxASSERT_MSG( combo->IsKindOf(CLASSINFO(wxOwnerDrawnComboBox)),
+ wxASSERT_MSG( wxDynamicCast(combo, wxOwnerDrawnComboBox),
wxT("you must subclass wxVListBoxComboPopup for drawing and measuring methods") );
wxCoord h = combo->OnMeasureItem(n);
{
wxOwnerDrawnComboBox* combo = (wxOwnerDrawnComboBox*) m_combo;
- wxASSERT_MSG( combo->IsKindOf(CLASSINFO(wxOwnerDrawnComboBox)),
+ wxASSERT_MSG( wxDynamicCast(combo, wxOwnerDrawnComboBox),
wxT("you must subclass wxVListBoxComboPopup for drawing and measuring methods") );
return combo->OnMeasureItemWidth(n);
{
wxOwnerDrawnComboBox* combo = (wxOwnerDrawnComboBox*) m_combo;
- wxASSERT_MSG( combo->IsKindOf(CLASSINFO(wxOwnerDrawnComboBox)),
+ wxASSERT_MSG( wxDynamicCast(combo, wxOwnerDrawnComboBox),
wxT("you must subclass wxVListBoxComboPopup for drawing and measuring methods") );
if ( IsCurrent((size_t)item) && !(flags & wxODCB_PAINTING_CONTROL) )
{
wxOwnerDrawnComboBox* combo = (wxOwnerDrawnComboBox*) m_combo;
- wxASSERT_MSG( combo->IsKindOf(CLASSINFO(wxOwnerDrawnComboBox)),
+ wxASSERT_MSG( wxDynamicCast(combo, wxOwnerDrawnComboBox),
wxT("you must subclass wxVListBoxComboPopup for drawing and measuring methods") );
combo->OnDrawItem(dc,rect,item,flags);
keychar = 0;
}
- if ( keycode == WXK_DOWN || keycode == WXK_NUMPAD_DOWN || keycode == WXK_RIGHT )
+ const bool readOnly = (comboStyle & wxCB_READONLY) != 0;
+
+ if ( keycode == WXK_DOWN || keycode == WXK_NUMPAD_DOWN || ( keycode == WXK_RIGHT && readOnly ) )
{
value++;
StopPartialCompletion();
}
- else if ( keycode == WXK_UP || keycode == WXK_NUMPAD_UP || keycode == WXK_LEFT )
+ else if ( keycode == WXK_UP || keycode == WXK_NUMPAD_UP || ( keycode == WXK_LEFT && readOnly ) )
{
value--;
StopPartialCompletion();
value-=10;
StopPartialCompletion();
}
- else if ( keycode == WXK_HOME || keycode == WXK_NUMPAD_HOME )
+ else if ( ( keycode == WXK_HOME || keycode == WXK_NUMPAD_HOME ) && readOnly )
{
value=0;
StopPartialCompletion();
}
- else if ( keycode == WXK_END || keycode == WXK_NUMPAD_END )
+ else if ( ( keycode == WXK_END || keycode == WXK_NUMPAD_END ) && readOnly )
{
value=itemCount-1;
StopPartialCompletion();
}
- else if ( keychar && (comboStyle & wxCB_READONLY) )
+ else if ( keychar && readOnly )
{
// Try partial completion
// The m_combo->SetValue() call above sets m_value to the index of this
// string. But if there are more identical string, the index is of the
- // first occurence, which may be wrong, so set the index explicitly here,
+ // first occurrence, which may be wrong, so set the index explicitly here,
// _after_ the SetValue() call.
m_value = value;
// Find initial selection
wxString strValue = m_combo->GetValue();
- if ( strValue.length() )
+ if ( !strValue.empty() )
m_value = m_strings.Index(strValue);
}
BEGIN_EVENT_TABLE(wxOwnerDrawnComboBox, wxComboCtrl)
END_EVENT_TABLE()
-
-#if wxUSE_EXTENDED_RTTI
-IMPLEMENT_DYNAMIC_CLASS2_XTI(wxOwnerDrawnComboBox, wxComboCtrl, wxControlWithItems, "wx/odcombo.h")
-
-wxBEGIN_PROPERTIES_TABLE(wxOwnerDrawnComboBox)
-wxEND_PROPERTIES_TABLE()
-
-wxBEGIN_HANDLERS_TABLE(wxOwnerDrawnComboBox)
-wxEND_HANDLERS_TABLE()
-
-wxCONSTRUCTOR_5( wxOwnerDrawnComboBox , wxWindow* , Parent , wxWindowID , Id , wxString , Value , wxPoint , Position , wxSize , Size )
-#else
-IMPLEMENT_DYNAMIC_CLASS2(wxOwnerDrawnComboBox, wxComboCtrl, wxControlWithItems)
-#endif
-
void wxOwnerDrawnComboBox::Init()
{
}
long style,
const wxValidator& validator,
const wxString& name)
- : wxComboCtrl()
{
Init();