+ // people expect to get "kill focus" event for the currently
+ // focused control before getting events from the other controls
+ // and, equally importantly, they may prevent the focus change from
+ // taking place at all (e.g. because the old control contents is
+ // invalid and needs to be corrected) in which case we shouldn't
+ // generate this event at all
+ SetFocus();
+ if ( FindFocus() == this )
+ {
+ Toggle(nItem);
+ SendEvent(nItem);
+
+ // scroll one item down if the item is the last one
+ // and isn't visible at all
+ int h;
+ GetClientSize(NULL, &h);
+ if ( rect.GetBottom() > h )
+ ScrollLines(1);
+ }
+ }
+ else
+ {
+ // implement default behaviour: clicking on the item selects it
+ event.Skip();