From 84f81d0eac539aede004e46a2fe00cbf03512017 Mon Sep 17 00:00:00 2001 From: nate stemen Date: Thu, 2 Jan 2020 14:21:45 -0500 Subject: [PATCH] Merge pull request #2470 from overleaf/cmg-file-tree-highlight Expand folder to show highlighted file in file tree GitOrigin-RevId: 7fb9174fd71eb362655bcabf2f7884597aebee47 --- .../controllers/FileTreeEntityController.js | 18 +++++++++++++++++- .../controllers/FileTreeFolderController.js | 14 ++++++++++---- .../js/ide/pdf/controllers/PdfController.js | 3 ++- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/services/web/frontend/js/ide/file-tree/controllers/FileTreeEntityController.js b/services/web/frontend/js/ide/file-tree/controllers/FileTreeEntityController.js index 4030d33e65..3491006261 100644 --- a/services/web/frontend/js/ide/file-tree/controllers/FileTreeEntityController.js +++ b/services/web/frontend/js/ide/file-tree/controllers/FileTreeEntityController.js @@ -17,7 +17,12 @@ define(['base', 'ide/file-tree/util/iconTypeFromName'], function( App, iconTypeFromName ) { - App.controller('FileTreeEntityController', function($scope, ide, $modal) { + App.controller('FileTreeEntityController', function( + $scope, + ide, + $modal, + $element + ) { $scope.select = function(e) { if (e.ctrlKey || e.metaKey) { e.stopPropagation() @@ -33,6 +38,17 @@ define(['base', 'ide/file-tree/util/iconTypeFromName'], function( } } + if ($scope.entity.type === 'doc') { + $scope.$watch('entity.selected', function(isSelected) { + if (isSelected) { + $scope.$emit('entity-file:selected', $scope.entity) + $scope.$applyAsync(function() { + $element[0].scrollIntoView() + }) + } + }) + } + $scope.draggableHelper = function() { if (ide.fileTreeManager.multiSelectedCount() > 0) { return $( diff --git a/services/web/frontend/js/ide/file-tree/controllers/FileTreeFolderController.js b/services/web/frontend/js/ide/file-tree/controllers/FileTreeFolderController.js index 43d0a73468..c8c5c2298f 100644 --- a/services/web/frontend/js/ide/file-tree/controllers/FileTreeFolderController.js +++ b/services/web/frontend/js/ide/file-tree/controllers/FileTreeFolderController.js @@ -25,10 +25,16 @@ define(['base'], App => $scope.toggleExpanded = function() { $scope.expanded = !$scope.expanded - return localStorage( - `folder.${$scope.entity.id}.expanded`, - $scope.expanded - ) + $scope._storeCurrentStateInLocalStorage() + } + + $scope.$on('entity-file:selected', function() { + $scope.expanded = true + $scope._storeCurrentStateInLocalStorage() + }) + + $scope._storeCurrentStateInLocalStorage = function() { + localStorage(`folder.${$scope.entity.id}.expanded`, $scope.expanded) } $scope.onDrop = function(events, ui) { diff --git a/services/web/frontend/js/ide/pdf/controllers/PdfController.js b/services/web/frontend/js/ide/pdf/controllers/PdfController.js index 026276d735..0e4af46e1a 100644 --- a/services/web/frontend/js/ide/pdf/controllers/PdfController.js +++ b/services/web/frontend/js/ide/pdf/controllers/PdfController.js @@ -1017,7 +1017,8 @@ define([ } ide.editorManager.openDoc(entity, { gotoLine: line, - gotoColumn: column + gotoColumn: column, + forceReopen: true }) } })