The issue looks like an oversight in the ux code, but its pretty easy to fix.
In Ext.grid.Column, getEditor checks editable before returning the editor. But Ext.ux.grid.CheckColumn uses processEvent instead of an editor, and editable is ignored. I've created my own column by extending CheckColumn and have overridden the processEvent function with one that includes the check for editable.
Code:
MyCheckColumn = Ext.extend(Ext.grid.CheckColumn, {
processEvent : function(name, e, grid, rowIndex, colIndex){
if (this.editable !== false) {
return MyCheckColumn.superclass.processEvent.apply(this, arguments);
}
}
});
Ext.reg('mycheckcolumn', MyCheckColumn);
Ext.grid.Column.types.mycheckcolumn = MyCheckColumn;
The details here are applicable to 3.3.1, but it looks like a similar fix would work in 4.0.x.