Sounds right to me.
Your in the 'grey' area of event programming.
So for example when do you know when you have a double or triple mouse click?
There is actually a timer that gets set and if a single mouse click comes in before the timer expires it gets promoted. All OS windowing systems allow you to configure the defaults for this.
So when you clicked on the first item with a CTRL it STILL generated a single selection.
I hope this makes sense.
So the ignore changing check that you are doing should prevent LOTS of events from being generated when the user does a large SHIFT selection. You could think that each item added could generated an action selected event but this prevents it.
Test it with a shift selection and see what happens.
Hope this helps.
Ed