+ if ( !GetPeer()->ButtonClickDidStateChange() )
+ {
+ wxCheckBoxState origState ;
+
+ origState = Get3StateValue();
+
+ switch (origState)
+ {
+ case wxCHK_UNCHECKED:
+ newState = wxCHK_CHECKED;
+ break;
+
+ case wxCHK_CHECKED:
+ // If the style flag to allow the user setting the undetermined state is set,
+ // then set the state to undetermined; otherwise set state to unchecked.
+ newState = Is3rdStateAllowedForUser() ? wxCHK_UNDETERMINED : wxCHK_UNCHECKED;
+ break;
+
+ case wxCHK_UNDETERMINED:
+ newState = wxCHK_UNCHECKED;
+ break;
+
+ default:
+ break;
+ }
+
+ if (newState == origState)
+ sendEvent = false;
+ else
+ Set3StateValue( newState );
+ }
+ else