ignore sourceDataChanged on invalid indexes
It is actually possible in a real world scenario that the source model emits dataChanged with invalid indexes when the source model is a QSortFilterProxyModel because QSortFilterProxyModel doesn't check for mapped indexex validity when its source model emitted dataChanged on a column QSortFilterProxyModel doesn't accept.