Ext.define('Ext.rtl.grid.plugin.HeaderResizer', { override: 'Ext.grid.plugin.HeaderResizer', adjustColumnWidth: function(offsetX) { if (this.headerCt.isOppositeRootDirection()) { offsetX = -offsetX; } this.callParent([offsetX]); }, adjustConstrainRegion: function(region, t, r, b, l) { return this.headerCt.isOppositeRootDirection() ? region.adjust(t, -l, b, -r) : this.callParent(arguments); }, calculateDragX: function(gridSection) { var gridX = gridSection.getX(), mouseX = this.tracker.getXY('point')[0]; if (this.headerCt.isOppositeRootDirection()) { return mouseX - gridX; } else { return this.callParent(arguments); } }, getViewOffset: function(gridSection, view) { var headerCtRtl = this.headerCt.getHierarchyState().rtl, borderWidth = gridSection.el.getBorderWidth(headerCtRtl ? 'r': 'l'), offset = view.getX() - gridSection.getX(); if (!headerCtRtl !== !Ext.rootHierarchyState.rtl) { offset = -(offset + view.getWidth() - gridSection.getWidth()); } return offset - borderWidth; }, getMovingMarker: function(markerOwner){ if (this.headerCt.isOppositeRootDirection()) { return markerOwner.getLhsMarker(); } else { return markerOwner.getRhsMarker(); } }, setMarkerX: function(marker, x) { var headerCt = this.headerCt; if (headerCt.getHierarchyState().rtl && !headerCt.isOppositeRootDirection()) { marker.rtlSetLocalX(x); } else { this.callParent(arguments); } } });