@@ -14,9 +14,6 @@ import {
1414 FileType ,
1515 Position ,
1616 ProviderResult ,
17- Tab ,
18- TabInputNotebook ,
19- TabInputText ,
2017 TextDocument ,
2118 TextDocumentContentProvider ,
2219 ThemeIcon ,
@@ -54,7 +51,11 @@ import {
5451 ContentNavigatorConfig ,
5552 FileManipulationEvent ,
5653} from "./types" ;
57- import { getFileStatement , isContainer as getIsContainer } from "./utils" ;
54+ import {
55+ getEditorTabForItem ,
56+ getFileStatement ,
57+ isContainer as getIsContainer ,
58+ } from "./utils" ;
5859
5960class ContentDataProvider
6061 implements
@@ -502,6 +503,27 @@ class ContentDataProvider
502503 return this . getChildren ( selection ) ;
503504 }
504505
506+ private async moveItem (
507+ item : ContentItem ,
508+ targetUri : string ,
509+ ) : Promise < boolean > {
510+ if ( ! targetUri ) {
511+ return false ;
512+ }
513+
514+ const closing = closeFileIfOpen ( item ) ;
515+ if ( ! ( await closing ) ) {
516+ return false ;
517+ }
518+
519+ const newUri = await this . model . moveTo ( item , targetUri ) ;
520+ if ( closing !== true ) {
521+ commands . executeCommand ( "vscode.open" , newUri ) ;
522+ }
523+
524+ return ! ! newUri ;
525+ }
526+
505527 private async handleContentItemDrop (
506528 target : ContentItem ,
507529 item : ContentItem ,
@@ -518,10 +540,7 @@ class ContentDataProvider
518540 success = await this . addToMyFavorites ( item ) ;
519541 } else {
520542 const targetUri = target . resourceId ;
521- if ( targetUri ) {
522- success = await this . model . moveTo ( item , targetUri ) ;
523- }
524-
543+ success = await this . moveItem ( item , targetUri ) ;
525544 if ( success ) {
526545 this . refresh ( ) ;
527546 }
@@ -676,14 +695,7 @@ class ContentDataProvider
676695export default ContentDataProvider ;
677696
678697const closeFileIfOpen = ( item : ContentItem ) => {
679- const fileUri = item . vscUri ;
680- const tabs : Tab [ ] = window . tabGroups . all . map ( ( tg ) => tg . tabs ) . flat ( ) ;
681- const tab = tabs . find (
682- ( tab ) =>
683- ( tab . input instanceof TabInputText ||
684- tab . input instanceof TabInputNotebook ) &&
685- tab . input . uri . query === fileUri . query , // compare the file id
686- ) ;
698+ const tab = getEditorTabForItem ( item ) ;
687699 if ( tab ) {
688700 return window . tabGroups . close ( tab ) ;
689701 }
0 commit comments