Skip to content

Commit 4d2789f

Browse files
committed
fix: navigation errors in console
1 parent e5f92bf commit 4d2789f

File tree

2 files changed

+29
-9
lines changed

2 files changed

+29
-9
lines changed

src/extensionsIntegrated/NavigationAndHistory/NavigationProvider.js

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ define(function (require, exports, module) {
428428
function _getCurrentEditNavFrame() {
429429
const currentFullEditor = EditorManager.getCurrentFullEditor();
430430
const currentlyViewedFile = MainViewManager.getCurrentlyViewedFile();
431-
let currentEditNavFrame;
431+
let currentEditNavFrame = null;
432432
if(currentFullEditor){
433433
currentEditNavFrame = new NavigationFrame(EditorManager.getCurrentFullEditor(),
434434
{ranges: EditorManager.getCurrentFullEditor()._codeMirror.listSelections()});
@@ -450,18 +450,20 @@ define(function (require, exports, module) {
450450
// Check if the poped frame is the current active frame or doesn't have any valid marker information
451451
// if true, jump again
452452
while (navFrame && navFrame === currentEditNavFrame
453-
||(navFrame && navFrame.filePath === currentEditNavFrame.filePath
453+
||(navFrame && currentEditNavFrame && navFrame.filePath === currentEditNavFrame.filePath
454454
&& _isSimilarSelection(navFrame.selections, currentEditNavFrame.selections)
455455
&& _isSimilarBookmarks(navFrame.bookMarkIds, currentEditNavFrame.bookMarkIds))
456-
||(skipCurrentFile && navFrame && navFrame.filePath === currentEditNavFrame.filePath)) {
456+
||(skipCurrentFile && navFrame && currentEditNavFrame && navFrame.filePath === currentEditNavFrame.filePath)) {
457457
navFrame = jumpBackwardStack.pop();
458458
}
459459

460460
if (navFrame) {
461461
// We will check for the file existence now, if it doesn't exist we will jump back again
462462
// but discard the popped frame as invalid.
463463
_validateFrame(navFrame).done(function () {
464-
jumpForwardStack.push(currentEditNavFrame);
464+
if(currentEditNavFrame) {
465+
jumpForwardStack.push(currentEditNavFrame);
466+
}
465467
navFrame.goTo();
466468
}).fail(function () {
467469
CommandManager.execute(NAVIGATION_JUMP_BACK);
@@ -470,7 +472,9 @@ define(function (require, exports, module) {
470472
deferred.resolve();
471473
});
472474
} else {
473-
jumpBackwardStack.push(currentEditNavFrame);
475+
if(currentEditNavFrame){
476+
jumpBackwardStack.push(currentEditNavFrame);
477+
}
474478
deferred.resolve();
475479
}
476480
return deferred.promise();
@@ -491,18 +495,20 @@ define(function (require, exports, module) {
491495
// Check if the poped frame is the current active frame or doesn't have any valid marker information
492496
// if true, jump again
493497
while (navFrame === currentEditNavFrame
494-
||(navFrame && navFrame.filePath === currentEditNavFrame.filePath
498+
||(navFrame && currentEditNavFrame && navFrame.filePath === currentEditNavFrame.filePath
495499
&& _isSimilarSelection(navFrame.selections ,currentEditNavFrame.selections)
496500
&& _isSimilarBookmarks(navFrame.bookMarkIds, currentEditNavFrame.bookMarkIds))
497-
||(skipCurrentFile && navFrame && navFrame.filePath === currentEditNavFrame.filePath)) {
501+
||(skipCurrentFile && navFrame && currentEditNavFrame && navFrame.filePath === currentEditNavFrame.filePath)) {
498502
navFrame = jumpForwardStack.pop();
499503
}
500504

501505
if(navFrame){
502506
// We will check for the file existence now, if it doesn't exist we will jump back again
503507
// but discard the popped frame as invalid.
504508
_validateFrame(navFrame).done(function () {
505-
jumpBackwardStack.push(currentEditNavFrame);
509+
if(currentEditNavFrame){
510+
jumpBackwardStack.push(currentEditNavFrame);
511+
}
506512
navFrame.goTo();
507513
}).fail(function () {
508514
_validateNavigationCmds();
@@ -666,7 +672,9 @@ define(function (require, exports, module) {
666672
// make sure that we don't push in duplicates
667673
jumpBackwardStack.push(lastBack);
668674
}
669-
jumpBackwardStack.push(currentEditNavFrame);
675+
if(currentEditNavFrame) {
676+
jumpBackwardStack.push(currentEditNavFrame);
677+
}
670678
jumpForwardStack = [];
671679
_validateNavigationCmds();
672680
}

test/spec/Extn-NavigationAndHistory-integ-test.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,5 +358,17 @@ define(function (require, exports, module) {
358358
await navigateResetStack();
359359
await _validateNavForFiles("test.css", "img/grabber_color-well.png", "test.js");
360360
}, 15000);
361+
362+
it("Should navigate back and forward even after all files closed", async function () {
363+
await navigateResetStack();
364+
await _validateNavForFiles("test.css", "test.html", "test.js");
365+
366+
await awaitsForDone(CommandManager.execute(Commands.FILE_CLOSE_ALL, { _forceClose: true }),
367+
"closing all files");
368+
await _expectNavButton(false, true, "nav back only enabled");
369+
await navigateBack();
370+
await _validateActiveFile("test.js");
371+
await _expectNavButton(false, true, "nav back only enabled");
372+
}, 15000);
361373
});
362374
});

0 commit comments

Comments
 (0)