The "selectionchange" event is not longer fired when selected records are removed from the store. It happens because the "removed" variable is not initialized with 0 but later is incremented with ++. It becomes NaN and "maybeFireSelectionChange" is never called.

Code from Ext.selection.Model:

Code:
 
    // @private
    // Called by subclasses to deselect records upon detection of deletion from the store
    deselectDeletedRecords: function(records) {
        var me = this,
            selected = me.selected,
            i, length = records.length,
            record, removed;

        // Deselect records which were removed
        for (i = 0; i < length; i++) {
            record = records[i];
            if (selected.remove(record)) {
                if (me.lastSelected == record) {
                    me.lastSelected = null;
                }
                if (me.getLastFocused() == record) {
                    me.setLastFocused(null);
                }
                ++removed;
            }
        }
        if (removed) {
            me.maybeFireSelectionChange(true);
        }
    },