Only emit hasSelectionChanged() when it's actually changed
Right now it gets emitted anytime data changes and the result is 0 or 1 items selected as a result, which seems incorrect.
Right now it gets emitted anytime data changes and the result is 0 or 1 items selected as a result, which seems incorrect.