Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb382f33

Browse files
authored
Merge pull request#403 from coderoad/fix/webview-multi-open
Fix/webview multi open
2 parentsd14a875 +caaa39d commitb382f33

File tree

2 files changed

+30
-33
lines changed

2 files changed

+30
-33
lines changed

‎src/commands.ts

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import logger from './services/logger'
88

99
exportconstCOMMANDS={
1010
START:'coderoad.start',
11-
OPEN_WEBVIEW:'coderoad.open_webview',
1211
CONFIG_TEST_RUNNER:'coderoad.config_test_runner',
1312
RUN_TEST:'coderoad.run_test',
1413
SET_CURRENT_POSITION:'coderoad.set_current_position',
@@ -29,27 +28,16 @@ export const createCommands = ({ extensionPath, workspaceState }: CreateCommandP
2928
return{
3029
// initialize
3130
[COMMANDS.START]:async()=>{
32-
letwebviewState:'INITIALIZING'|'RESTARTING'
33-
if(!webview){
34-
webviewState='INITIALIZING'
35-
}elseif(webview.loaded){
36-
// already loaded
37-
vscode.window.showInformationMessage('CodeRoad already open')
38-
return
31+
console.log('start')
32+
if(webview&&webview.state.loaded){
33+
webview.createOrShow()
3934
}else{
40-
webviewState='RESTARTING'
35+
// activate machine
36+
webview=createWebView({
37+
extensionPath,
38+
workspaceState,
39+
})
4140
}
42-
43-
// activate machine
44-
webview=createWebView({
45-
extensionPath,
46-
workspaceState,
47-
})
48-
},
49-
// open React webview
50-
[COMMANDS.OPEN_WEBVIEW]:()=>{
51-
// setup 1x1 horizontal layout
52-
webview.createOrShow()
5341
},
5442
[COMMANDS.CONFIG_TEST_RUNNER]:async(data:TT.Tutorial)=>{
5543
consttestRunnerConfig=data.config.testRunner

‎src/services/webview/index.ts

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ interface ReactWebViewProps {
99
workspaceState:vscode.Memento
1010
}
1111

12+
letstate={loaded:false}
13+
1214
constcreateReactWebView=({ extensionPath, workspaceState}:ReactWebViewProps)=>{
13-
letloaded=false
1415
// TODO add disposables
1516
constdisposables:vscode.Disposable[]=[]
1617

@@ -27,15 +28,23 @@ const createReactWebView = ({ extensionPath, workspaceState }: ReactWebViewProps
2728
// allows scripts to load external resources (eg. markdown images, fonts)
2829
enableCommandUris:true,
2930
}
30-
loaded=true
31+
state.loaded=true
3132
returnvscode.window.createWebviewPanel(viewType,title,vscode.ViewColumn.Two,config)
3233
}
3334

3435
letpanel:vscode.WebviewPanel=createWebViewPanel()
3536

3637
// Listen for when the panel is disposed
3738
// This happens when the user closes the panel or when the panel is closed programmatically
38-
panel.onDidDispose(panel.dispose,null,disposables)
39+
panel.onDidDispose(
40+
()=>{
41+
console.log('dispose panel')
42+
panel.dispose()
43+
state.loaded=false
44+
},
45+
null,
46+
disposables,
47+
)
3948

4049
constchannel=newChannel({
4150
workspaceState,
@@ -49,16 +58,18 @@ const createReactWebView = ({ extensionPath, workspaceState }: ReactWebViewProps
4958

5059
panel.webview.onDidReceiveMessage(receive,null,disposables)
5160

61+
// panel.onDidDispose(() => {
62+
// // Clean up our resources
63+
// loaded = false
64+
// panel.dispose()
65+
// Promise.all(disposables.map((x) => x.dispose()))
66+
// })
67+
5268
constrootPath=path.join(extensionPath,'build')
5369
render(panel,rootPath)
5470

5571
return{
56-
dispose(){
57-
// Clean up our resources
58-
loaded=false
59-
panel.dispose()
60-
Promise.all(disposables.map((x)=>x.dispose()))
61-
},
72+
state,
6273
createOrShow(){
6374
vscode.commands.executeCommand('vscode.setEditorLayout',{
6475
orientation:0,
@@ -68,10 +79,8 @@ const createReactWebView = ({ extensionPath, workspaceState }: ReactWebViewProps
6879
// Otherwise, create a new panel.
6980

7081
if(panel&&panel.webview){
71-
if(!loaded){
72-
panel.reveal(vscode.ViewColumn.Two)
73-
loaded=true
74-
}
82+
vscode.window.showInformationMessage('CodeRoad already open')
83+
panel.reveal(vscode.ViewColumn.Two)
7584
}else{
7685
panel=createWebViewPanel()
7786
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp