X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c5ca409b6a6cc4ab503f5d81afa2f637ec609f4c..315ebf688c0e69bed47cd3149158198b781b5f65:/src/msw/combobox.cpp diff --git a/src/msw/combobox.cpp b/src/msw/combobox.cpp index 00f1314ae2..e23e1fa66e 100644 --- a/src/msw/combobox.cpp +++ b/src/msw/combobox.cpp @@ -56,59 +56,59 @@ #if wxUSE_EXTENDED_RTTI WX_DEFINE_FLAGS( wxComboBoxStyle ) -WX_BEGIN_FLAGS( wxComboBoxStyle ) +wxBEGIN_FLAGS( wxComboBoxStyle ) // new style border flags, we put them first to // use them for streaming out - WX_FLAGS_MEMBER(wxBORDER_SIMPLE) - WX_FLAGS_MEMBER(wxBORDER_SUNKEN) - WX_FLAGS_MEMBER(wxBORDER_DOUBLE) - WX_FLAGS_MEMBER(wxBORDER_RAISED) - WX_FLAGS_MEMBER(wxBORDER_STATIC) - WX_FLAGS_MEMBER(wxBORDER_NONE) + wxFLAGS_MEMBER(wxBORDER_SIMPLE) + wxFLAGS_MEMBER(wxBORDER_SUNKEN) + wxFLAGS_MEMBER(wxBORDER_DOUBLE) + wxFLAGS_MEMBER(wxBORDER_RAISED) + wxFLAGS_MEMBER(wxBORDER_STATIC) + wxFLAGS_MEMBER(wxBORDER_NONE) // old style border flags - WX_FLAGS_MEMBER(wxSIMPLE_BORDER) - WX_FLAGS_MEMBER(wxSUNKEN_BORDER) - WX_FLAGS_MEMBER(wxDOUBLE_BORDER) - WX_FLAGS_MEMBER(wxRAISED_BORDER) - WX_FLAGS_MEMBER(wxSTATIC_BORDER) - WX_FLAGS_MEMBER(wxNO_BORDER) + wxFLAGS_MEMBER(wxSIMPLE_BORDER) + wxFLAGS_MEMBER(wxSUNKEN_BORDER) + wxFLAGS_MEMBER(wxDOUBLE_BORDER) + wxFLAGS_MEMBER(wxRAISED_BORDER) + wxFLAGS_MEMBER(wxSTATIC_BORDER) + wxFLAGS_MEMBER(wxBORDER) // standard window styles - WX_FLAGS_MEMBER(wxTAB_TRAVERSAL) - WX_FLAGS_MEMBER(wxCLIP_CHILDREN) - WX_FLAGS_MEMBER(wxTRANSPARENT_WINDOW) - WX_FLAGS_MEMBER(wxWANTS_CHARS) - WX_FLAGS_MEMBER(wxNO_FULL_REPAINT_ON_RESIZE) - WX_FLAGS_MEMBER(wxALWAYS_SHOW_SB ) - WX_FLAGS_MEMBER(wxVSCROLL) - WX_FLAGS_MEMBER(wxHSCROLL) - - WX_FLAGS_MEMBER(wxCB_SIMPLE) - WX_FLAGS_MEMBER(wxCB_SORT) - WX_FLAGS_MEMBER(wxCB_READONLY) - WX_FLAGS_MEMBER(wxCB_DROPDOWN) - -WX_END_FLAGS( wxComboBoxStyle ) + wxFLAGS_MEMBER(wxTAB_TRAVERSAL) + wxFLAGS_MEMBER(wxCLIP_CHILDREN) + wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW) + wxFLAGS_MEMBER(wxWANTS_CHARS) + wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE) + wxFLAGS_MEMBER(wxALWAYS_SHOW_SB ) + wxFLAGS_MEMBER(wxVSCROLL) + wxFLAGS_MEMBER(wxHSCROLL) + + wxFLAGS_MEMBER(wxCB_SIMPLE) + wxFLAGS_MEMBER(wxCB_SORT) + wxFLAGS_MEMBER(wxCB_READONLY) + wxFLAGS_MEMBER(wxCB_DROPDOWN) + +wxEND_FLAGS( wxComboBoxStyle ) IMPLEMENT_DYNAMIC_CLASS_XTI(wxComboBox, wxControl,"wx/combobox.h") -WX_BEGIN_PROPERTIES_TABLE(wxComboBox) - WX_DELEGATE( OnSelect , wxEVT_COMMAND_COMBOBOX_SELECTED , wxCommandEvent ) - WX_DELEGATE( OnTextEnter , wxEVT_COMMAND_TEXT_ENTER , wxCommandEvent ) +wxBEGIN_PROPERTIES_TABLE(wxComboBox) + wxEVENT_PROPERTY( Select , wxEVT_COMMAND_COMBOBOX_SELECTED , wxCommandEvent ) + wxEVENT_PROPERTY( TextEnter , wxEVT_COMMAND_TEXT_ENTER , wxCommandEvent ) // TODO DELEGATES - WX_PROPERTY( Font , wxFont , SetFont , GetFont , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) - WX_PROPERTY_COLLECTION( Choices , wxArrayString , wxString , AppendString , GetStrings , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) - WX_PROPERTY( Value ,wxString, SetValue, GetValue, , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) - WX_PROPERTY( Selection ,int, SetSelection, GetSelection, , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) - WX_PROPERTY_FLAGS( WindowStyle , wxComboBoxStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style -WX_END_PROPERTIES_TABLE() + wxPROPERTY( Font , wxFont , SetFont , GetFont , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) + wxPROPERTY_COLLECTION( Choices , wxArrayString , wxString , AppendString , GetStrings , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) + wxPROPERTY( Value ,wxString, SetValue, GetValue, , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) + wxPROPERTY( Selection ,int, SetSelection, GetSelection, , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) + wxPROPERTY_FLAGS( WindowStyle , wxComboBoxStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style +wxEND_PROPERTIES_TABLE() -WX_BEGIN_HANDLERS_TABLE(wxComboBox) -WX_END_HANDLERS_TABLE() +wxBEGIN_HANDLERS_TABLE(wxComboBox) +wxEND_HANDLERS_TABLE() -WX_CONSTRUCTOR_5( wxComboBox , wxWindow* , Parent , wxWindowID , Id , wxString , Value , wxPoint , Position , wxSize , Size ) +wxCONSTRUCTOR_5( wxComboBox , wxWindow* , Parent , wxWindowID , Id , wxString , Value , wxPoint , Position , wxSize , Size ) #else IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl) #endif @@ -311,6 +311,14 @@ bool wxComboBox::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) } else // we're synthesizing text updated event from sel change { + // We need to retrieve the current selection because the user + // may have changed it in the previous handler (for CBN_SELCHANGE + // above). + sel = GetSelection(); + if ( sel > -1 ) + { + value = GetString(sel); + } // we need to do this because the user code expects // wxComboBox::GetValue() to return the new value from // "text updated" handler but it hadn't been updated yet @@ -425,6 +433,20 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, return TRUE; } +bool wxComboBox::Create(wxWindow *parent, wxWindowID id, + const wxString& value, + const wxPoint& pos, + const wxSize& size, + const wxArrayString& choices, + long style, + const wxValidator& validator, + const wxString& name) +{ + wxCArrayString chs(choices); + return Create(parent, id, value, pos, size, chs.GetCount(), + chs.GetStrings(), style, validator, name); +} + void wxComboBox::SetValue(const wxString& value) { if ( HasFlag(wxCB_READONLY) )