Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
a856e60a
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a856e60a
编写于
11月 10, 2020
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Better support dragging and dropping with webview views
Fixes #108953
上级
10514bf4
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
43 addition
and
15 deletion
+43
-15
src/vs/workbench/contrib/webview/browser/webviewWindowDragMonitor.ts
...bench/contrib/webview/browser/webviewWindowDragMonitor.ts
+35
-0
src/vs/workbench/contrib/webviewPanel/browser/webviewEditor.ts
...s/workbench/contrib/webviewPanel/browser/webviewEditor.ts
+2
-13
src/vs/workbench/contrib/webviewView/browser/webviewViewPane.ts
.../workbench/contrib/webviewView/browser/webviewViewPane.ts
+6
-2
未找到文件。
src/vs/workbench/contrib/webview/browser/webviewWindowDragMonitor.ts
0 → 100644
浏览文件 @
a856e60a
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
*
as
DOM
from
'
vs/base/browser/dom
'
;
import
{
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
Webview
}
from
'
vs/workbench/contrib/webview/browser/webview
'
;
/**
* Allows webviews to monitor when an element in the VS Code editor is being dragged/dropped.
*
* This is required since webview end up eating the drag event. VS Code needs to see this
* event so it can handle editor element drag drop.
*/
export
class
WebviewWindowDragMonitor
extends
Disposable
{
constructor
(
getWebview
:
()
=>
Webview
|
undefined
)
{
super
();
this
.
_register
(
DOM
.
addDisposableListener
(
window
,
DOM
.
EventType
.
DRAG_START
,
()
=>
{
getWebview
()?.
windowDidDragStart
();
}));
const
onDragEnd
=
()
=>
{
getWebview
()?.
windowDidDragEnd
();
};
this
.
_register
(
DOM
.
addDisposableListener
(
window
,
DOM
.
EventType
.
DRAG_END
,
onDragEnd
));
this
.
_register
(
DOM
.
addDisposableListener
(
window
,
DOM
.
EventType
.
MOUSE_MOVE
,
currentEvent
=>
{
if
(
currentEvent
.
buttons
===
0
)
{
onDragEnd
();
}
}));
}
}
src/vs/workbench/contrib/webviewPanel/browser/webviewEditor.ts
浏览文件 @
a856e60a
...
...
@@ -15,6 +15,7 @@ import { IThemeService } from 'vs/platform/theme/common/themeService';
import
{
EditorPane
}
from
'
vs/workbench/browser/parts/editor/editorPane
'
;
import
{
EditorInput
,
EditorOptions
,
IEditorOpenContext
}
from
'
vs/workbench/common/editor
'
;
import
{
WebviewOverlay
}
from
'
vs/workbench/contrib/webview/browser/webview
'
;
import
{
WebviewWindowDragMonitor
}
from
'
vs/workbench/contrib/webview/browser/webviewWindowDragMonitor
'
;
import
{
WebviewInput
}
from
'
vs/workbench/contrib/webviewPanel/browser/webviewEditorInput
'
;
import
{
IEditorDropService
}
from
'
vs/workbench/services/editor/browser/editorDropService
'
;
import
{
IEditorGroup
}
from
'
vs/workbench/services/editor/common/editorGroupsService
'
;
...
...
@@ -155,19 +156,7 @@ export class WebviewEditor extends EditorPane {
containsGroup
:
(
group
)
=>
this
.
group
?.
id
===
group
.
group
.
id
}));
this
.
_webviewVisibleDisposables
.
add
(
DOM
.
addDisposableListener
(
window
,
DOM
.
EventType
.
DRAG_START
,
()
=>
{
this
.
webview
?.
windowDidDragStart
();
}));
const
onDragEnd
=
()
=>
{
this
.
webview
?.
windowDidDragEnd
();
};
this
.
_webviewVisibleDisposables
.
add
(
DOM
.
addDisposableListener
(
window
,
DOM
.
EventType
.
DRAG_END
,
onDragEnd
));
this
.
_webviewVisibleDisposables
.
add
(
DOM
.
addDisposableListener
(
window
,
DOM
.
EventType
.
MOUSE_MOVE
,
currentEvent
=>
{
if
(
currentEvent
.
buttons
===
0
)
{
onDragEnd
();
}
}));
this
.
_webviewVisibleDisposables
.
add
(
new
WebviewWindowDragMonitor
(()
=>
this
.
webview
));
this
.
synchronizeWebviewContainerDimensions
(
input
.
webview
);
this
.
_webviewVisibleDisposables
.
add
(
this
.
trackFocus
(
input
.
webview
));
...
...
src/vs/workbench/contrib/webviewView/browser/webviewViewPane.ts
浏览文件 @
a856e60a
...
...
@@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
{
Dimension
}
from
'
vs/base/browser/dom
'
;
import
*
as
DOM
from
'
vs/base/browser/dom
'
;
import
{
CancellationTokenSource
}
from
'
vs/base/common/cancellation
'
;
import
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
DisposableStore
,
MutableDisposable
,
toDisposable
}
from
'
vs/base/common/lifecycle
'
;
...
...
@@ -24,6 +24,7 @@ import { IViewletViewOptions } from 'vs/workbench/browser/parts/views/viewsViewl
import
{
Memento
,
MementoObject
}
from
'
vs/workbench/common/memento
'
;
import
{
IViewDescriptorService
,
IViewsService
}
from
'
vs/workbench/common/views
'
;
import
{
IWebviewService
,
WebviewOverlay
}
from
'
vs/workbench/contrib/webview/browser/webview
'
;
import
{
WebviewWindowDragMonitor
}
from
'
vs/workbench/contrib/webview/browser/webviewWindowDragMonitor
'
;
import
{
IWebviewViewService
,
WebviewView
}
from
'
vs/workbench/contrib/webviewView/browser/webviewViewService
'
;
import
{
IExtensionService
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
...
...
@@ -139,7 +140,7 @@ export class WebviewViewPane extends ViewPane {
}
if
(
this
.
_container
)
{
this
.
_webview
.
value
.
layoutWebviewOverElement
(
this
.
_container
,
new
Dimension
(
width
,
height
));
this
.
_webview
.
value
.
layoutWebviewOverElement
(
this
.
_container
,
new
D
OM
.
D
imension
(
width
,
height
));
}
}
...
...
@@ -172,6 +173,9 @@ export class WebviewViewPane extends ViewPane {
this
.
_webviewDisposables
.
add
(
webview
.
onDidUpdateState
(()
=>
{
this
.
viewState
[
storageKeys
.
webviewState
]
=
webview
.
state
;
}));
this
.
_webviewDisposables
.
add
(
new
WebviewWindowDragMonitor
(()
=>
this
.
_webview
.
value
));
const
source
=
this
.
_webviewDisposables
.
add
(
new
CancellationTokenSource
());
this
.
withProgress
(
async
()
=>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录