@@ -21,15 +21,15 @@ const webviewPanelContent = require("../../content/index.html").default;
21
21
export default class InteractiveWebviewGenerator {
22
22
private context : vscode . ExtensionContext ;
23
23
24
- private webviewPanels : Map < vscode . Uri , PreviewPanel > ;
24
+ private webviewPanels : Map < String , PreviewPanel > ;
25
25
26
26
constructor ( context : vscode . ExtensionContext ) {
27
27
this . context = context ;
28
28
this . webviewPanels = new Map ( ) ;
29
29
}
30
30
31
31
setNeedsRebuild ( uri : vscode . Uri , needsRebuild : boolean ) {
32
- const panel = this . webviewPanels . get ( uri ) ;
32
+ const panel = this . webviewPanels . get ( uri . toString ( ) ) ;
33
33
34
34
if ( panel ) {
35
35
panel . setNeedsRebuild ( needsRebuild ) ;
@@ -38,7 +38,7 @@ export default class InteractiveWebviewGenerator {
38
38
}
39
39
40
40
getPanel ( uri : vscode . Uri ) {
41
- return this . webviewPanels . get ( uri ) ;
41
+ return this . webviewPanels . get ( uri . toString ( ) ) ;
42
42
}
43
43
44
44
// eslint-disable-next-line class-methods-use-this
@@ -68,10 +68,14 @@ export default class InteractiveWebviewGenerator {
68
68
const that = this ;
69
69
70
70
return new Promise ( ( resolve , reject ) => {
71
- let previewPanel = ( uri ) ? that . webviewPanels . get ( uri ) : undefined ;
71
+ let previewPanel = ( uri ) ? that . webviewPanels . get ( uri . toString ( ) ) : undefined ;
72
72
73
73
if ( previewPanel && ! options . allowMultiplePanels ) {
74
- previewPanel . reveal ( isObject ( displayColumn ) ? displayColumn . viewColumn : displayColumn ) ;
74
+ if ( ! isObject ( displayColumn ) ) {
75
+ previewPanel . reveal ( displayColumn ) ;
76
+ } else {
77
+ previewPanel . reveal ( displayColumn . viewColumn , displayColumn . preserveFocus ) ;
78
+ }
75
79
} else {
76
80
previewPanel = that . createPreviewPanel ( uri , displayColumn , options . title ) ;
77
81
@@ -80,13 +84,15 @@ export default class InteractiveWebviewGenerator {
80
84
return ;
81
85
}
82
86
if ( uri ) {
83
- that . webviewPanels . set ( uri , previewPanel ) ;
87
+ that . webviewPanels . set ( uri . toString ( ) , previewPanel ) ;
84
88
}
85
89
// when the user closes the tab, remove the panel
86
90
previewPanel . getPanel ( ) . onDidDispose ( ( ) => {
87
91
previewPanel ?. dispose ( ) ;
88
- // eslint-disable-next-line no-sequences
89
- if ( uri ) return that . webviewPanels . delete ( uri ) , undefined , that . context . subscriptions ;
92
+ if ( uri ) {
93
+ // eslint-disable-next-line no-sequences
94
+ return that . webviewPanels . delete ( uri . toString ( ) ) , undefined , that . context . subscriptions ;
95
+ }
90
96
return that . context . subscriptions ;
91
97
} ) ;
92
98
// when the pane becomes visible again, refresh it
0 commit comments