- int n = GetSelection();
- if (n > -1)
- {
- wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId);
- event.SetInt(n);
- event.SetEventObject(this);
- event.SetString(GetStringSelection());
- if ( HasClientObjectData() )
- event.SetClientObject( GetClientObject(n) );
- else if ( HasClientUntypedData() )
- event.SetClientData( GetClientData(n) );
- ProcessCommand(event);
+ case CBN_CLOSEUP:
+ // it should be safe to use CB_GETCURSEL again
+ m_lastAcceptedSelection = wxID_NONE;
+ break;
+
+ case CBN_SELCHANGE:
+ {
+ const int n = GetSelection();
+
+ wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId);
+ event.SetInt(n);
+ event.SetEventObject(this);
+
+ if ( n > -1 )
+ {
+ event.SetString(GetStringSelection());
+ if ( HasClientObjectData() )
+ event.SetClientObject( GetClientObject(n) );
+ else if ( HasClientUntypedData() )
+ event.SetClientData( GetClientData(n) );
+ }
+
+ ProcessCommand(event);
+ }
+ return true;