@@ -92,20 +92,22 @@ define(function (require, exports, module) {
9292 CommandManager . get ( closeAll ) . setName ( Strings . CMD_FILE_CLOSE_ALL ) ;
9393
9494 if ( file ) {
95- var targetIndex = MainViewManager . findInWorkingSet ( MainViewManager . ACTIVE_PANE , file . fullPath ) ,
96- workingSetListSize = MainViewManager . getWorkingSetSize ( MainViewManager . ACTIVE_PANE ) ;
97-
98- if ( targetIndex === workingSetListSize - 1 ) { // hide "Close Others Below" if the last file in Working Files is selected
99- CommandManager . get ( closeBelow ) . setEnabled ( false ) ;
100- } else {
101- CommandManager . get ( closeBelow ) . setEnabled ( true ) ;
102- }
103-
104- if ( targetIndex === 0 ) { // hide "Close Others Above" if the first file in Working Files is selected
105- CommandManager . get ( closeAbove ) . setEnabled ( false ) ;
106- } else {
107- CommandManager . get ( closeAbove ) . setEnabled ( true ) ;
108- }
95+ let workingSetList = MainViewManager . getWorkingSet ( MainViewManager . ACTIVE_PANE ) ,
96+ targetIndex = MainViewManager . findInWorkingSet ( MainViewManager . ACTIVE_PANE , file . fullPath ) ,
97+ lastIndex = workingSetList . length - 1 ;
98+
99+ // we disable the bulk closing menu items if there are no files to close
100+ // so for "Close Above", if the first file is selected or all files above are pinned
101+ // for "Close Below", if the last file is selected or all files below are pinned
102+ // for "Close All", if all files are pinned
103+ let isPrevFilePinned = targetIndex > 0 &&
104+ MainViewManager . isPathPinned ( MainViewManager . ACTIVE_PANE , workingSetList [ targetIndex - 1 ] . fullPath ) ;
105+ let isLastFilePinned = lastIndex >= 0 &&
106+ MainViewManager . isPathPinned ( MainViewManager . ACTIVE_PANE , workingSetList [ lastIndex ] . fullPath ) ;
107+
108+ CommandManager . get ( closeAbove ) . setEnabled ( targetIndex > 0 && ! isPrevFilePinned ) ;
109+ CommandManager . get ( closeBelow ) . setEnabled ( targetIndex < lastIndex && ! isLastFilePinned ) ;
110+ CommandManager . get ( closeAll ) . setEnabled ( ! isLastFilePinned ) ;
109111 }
110112 }
111113
0 commit comments