Ext.override(Ext.view.Table, { afterRender: function() { var me = this; me.callParent(); me.mon(me.el, { scroll: me.fireBodyScroll, scope: me }); if (!me.featuresMC || (me.featuresMC.findIndex('ftype', 'selectable') < 0)) { me.el.unselectable(); } me.attachEventsForFeatures(); } }); Ext.define('PVE.grid.SelectFeature', { extend: 'Ext.grid.feature.Feature', alias: 'feature.selectable', mutateMetaRowTpl: function(metaRowTpl) { var tpl, i, ln = metaRowTpl.length; for (i = 0; i < ln; i++) { tpl = metaRowTpl[i]; tpl = tpl.replace(/x-grid-row/, 'x-grid-row x-selectable'); tpl = tpl.replace(/x-grid-cell-inner x-unselectable/g, 'x-grid-cell-inner'); tpl = tpl.replace(/unselectable="on"/g, ''); metaRowTpl[i] = tpl; } } });