diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index acf5b547f5..1a365dd131 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -40,8 +40,7 @@ div.full-size( on-ctrl-enter="recompileViaKey", syntax-validation="settings.syntaxValidation", review-panel="reviewPanel", - on-scroll="scrollBindings.onAceScroll", - scroll-events="scrollBindings.reviewPanelEvents", + events-bridge="reviewPanelEventsBridge" track-changes-enabled="trackChangesFeatureFlag", track-new-changes= "reviewPanel.trackNewChanges", changes-tracker="reviewPanel.changesTracker", diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee index 7d5b333eff..33d1039a03 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee @@ -53,8 +53,7 @@ define [ onCtrlEnter: "=" syntaxValidation: "=" reviewPanel: "=" - onScroll: "=" - scrollEvents: "=" + eventsBridge: "=" trackNewChanges: "=" trackChangesEnabled: "=" changesTracker: "=" @@ -236,12 +235,16 @@ define [ scope.$emit "#{scope.name}:change" onScroll = (scrollTop) -> - return if !scope.onScroll? + return if !scope.eventsBridge? height = editor.renderer.layerConfig.maxHeight - scope.onScroll(scrollTop, height) + scope.eventsBridge.emit "aceScroll", scrollTop, height + + onScrollbarVisibilityChanged = (event, vRenderer) -> + return if !scope.eventsBridge? + scope.eventsBridge.emit "aceScrollbarVisibilityChanged", vRenderer.scrollBarV.isVisible, vRenderer.scrollBarV.width - if scope.scrollEvents? - scope.scrollEvents.on "scroll", (position) -> + if scope.eventsBridge? + scope.eventsBridge.on "externalScroll", (position) -> editor.getSession().setScrollTop(position) attachToAce = (sharejs_doc) -> @@ -296,6 +299,8 @@ define [ session.setAnnotations scope.annotations session.on "changeScrollTop", onScroll + editor.renderer.on "scrollbarVisibilityChanged", onScrollbarVisibilityChanged + setTimeout () -> # Let any listeners init themselves onScroll(editor.renderer.getScrollTop()) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 4b214067bf..89319d2e5e 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -19,10 +19,12 @@ define [ adding: false content: "" - # Used to communicate between Ace and reviewPanelSorted directive + # DEPRECATED Used to communicate between Ace and reviewPanelSorted directive $scope.scrollBindings = reviewPanelEvents: new EventEmitter() + $scope.reviewPanelEventsBridge = new EventEmitter() + changesTrackers = {} $scope.$watch "editor.open_doc_id", (open_doc_id) -> diff --git a/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee b/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee index add21ce875..7443dd5fa1 100644 --- a/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee @@ -112,6 +112,9 @@ define [ ignoreNextPanelEvent = false ignoreNextAceEvent = false + handleScrollbarVisibilityChanged = (isVisible, scrollbarWidth) -> + console.log isVisible, scrollbarWidth + scrollPanel = (scrollTop, height) -> if ignoreNextAceEvent ignoreNextAceEvent = false @@ -126,7 +129,8 @@ define [ ignoreNextPanelEvent = false else ignoreNextAceEvent = true - scope.scrollBindings.reviewPanelEvents.emit "scroll", scrollTop - - scope.scrollBindings.onAceScroll = scrollPanel - } \ No newline at end of file + scope.reviewPanelEventsBridge.emit "externalScroll", scrollTop + + scope.reviewPanelEventsBridge.on "aceScroll", scrollPanel + scope.reviewPanelEventsBridge.on "aceScrollbarVisibilityChanged", handleScrollbarVisibilityChanged + }