ngGridDirectives.directive('ngViewport', [function() { return function($scope, elm) { var isMouseWheelActive; var prevScollLeft; var prevScollTop = 0; elm.bind('scroll', function(evt) { var scrollLeft = evt.target.scrollLeft, scrollTop = evt.target.scrollTop; if ($scope.$headerContainer) { $scope.$headerContainer.scrollLeft(scrollLeft); } $scope.adjustScrollLeft(scrollLeft); $scope.adjustScrollTop(scrollTop); if (!$scope.$root.$$phase) { $scope.$digest(); } prevScollLeft = scrollLeft; prevScollTop = prevScollTop; isMouseWheelActive = false; return true; }); elm.bind("mousewheel DOMMouseScroll", function() { isMouseWheelActive = true; elm.focus(); return true; }); if (!$scope.enableCellSelection) { $scope.domAccessProvider.selectionHandlers($scope, elm); } }; }]);