Просмотр исходного кода

Merge pull request #1756 from overleaf/pr-resize-ace-when-toggling-pdf

Resize Ace when toggling PDF view

GitOrigin-RevId: 77e6fe662eb67f2ec39a00f42a35026f6a696eb9
Alasdair Smith 7 лет назад
Родитель
Сommit
dc09095ae7

+ 1 - 1
services/web/app/views/project/editor/editor.pug

@@ -56,7 +56,7 @@ div.full-size(
 			last-updated="editor.last_updated",
 			cursor-position="editor.cursorPosition",
 			goto-line="editor.gotoLine",
-			resize-on="layout:main:resize,layout:pdf:resize,layout:review:resize,review-panel:toggle",
+			resize-on="layout:main:resize,layout:pdf:resize,layout:review:resize,review-panel:toggle,layout:flat-screen:toggle",
 			annotations="pdf.logEntryAnnotations[editor.open_doc_id]",
 			read-only="!permissions.write",
 			file-name="editor.open_doc_name",

+ 3 - 1
services/web/public/src/ide.js

@@ -158,8 +158,10 @@ define([
       return ($scope.ui.pdfWidth = layoutState.east.size)
     })
 
-    // Tracking code.
     $scope.$watch('ui.view', function(newView, oldView) {
+      if (newView !== oldView) {
+        $scope.$broadcast('layout:flat-screen:toggle')
+      }
       if (newView != null && newView !== 'editor' && newView !== 'pdf') {
         return event_tracking.sendMBOnce(`ide-open-view-${newView}-once`)
       }

+ 12 - 10
services/web/public/src/ide/editor/directives/aceEditor.js

@@ -390,16 +390,18 @@ define([
         if (attrs.resizeOn != null) {
           for (let event of Array.from(attrs.resizeOn.split(','))) {
             scope.$on(event, function() {
-              const previousScreenPosition = getCursorScreenPosition()
-              editor.resize()
-              // Put cursor back to same vertical position on screen
-              const newScreenPosition = getCursorScreenPosition()
-              const session = editor.getSession()
-              return session.setScrollTop(
-                session.getScrollTop() +
-                  newScreenPosition -
-                  previousScreenPosition
-              )
+              scope.$applyAsync(() => {
+                const previousScreenPosition = getCursorScreenPosition()
+                editor.resize()
+                // Put cursor back to same vertical position on screen
+                const newScreenPosition = getCursorScreenPosition()
+                const session = editor.getSession()
+                return session.setScrollTop(
+                  session.getScrollTop() +
+                    newScreenPosition -
+                    previousScreenPosition
+                )
+              })
             })
           }
         }