Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
cb123bcc
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
cb123bcc
编写于
1月 10, 2019
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
list: unpack drag and drop data
related to #66291
上级
4bbfaa2b
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
37 addition
and
20 deletion
+37
-20
src/vs/base/browser/ui/list/listView.ts
src/vs/base/browser/ui/list/listView.ts
+12
-16
src/vs/base/browser/ui/tree/abstractTree.ts
src/vs/base/browser/ui/tree/abstractTree.ts
+9
-1
src/vs/base/browser/ui/tree/asyncDataTree.ts
src/vs/base/browser/ui/tree/asyncDataTree.ts
+10
-1
src/vs/workbench/parts/debug/electron-browser/watchExpressionsView.ts
...ench/parts/debug/electron-browser/watchExpressionsView.ts
+6
-2
未找到文件。
src/vs/base/browser/ui/list/listView.ts
浏览文件 @
cb123bcc
...
...
@@ -76,55 +76,51 @@ const DefaultOptions = {
export
class
ElementsDragAndDropData
<
T
>
implements
IDragAndDropData
{
private
elements
:
T
[];
readonly
elements
:
T
[];
constructor
(
elements
:
T
[])
{
this
.
elements
=
elements
;
}
public
update
(
dataTransfer
:
DataTransfer
):
void
{
// no-op
}
update
():
void
{
}
public
getData
():
any
{
getData
():
any
{
return
this
.
elements
;
}
}
export
class
ExternalElementsDragAndDropData
<
T
>
implements
IDragAndDropData
{
private
elements
:
T
[];
readonly
elements
:
T
[];
constructor
(
elements
:
T
[])
{
this
.
elements
=
elements
;
}
public
update
(
dataTransfer
:
DataTransfer
):
void
{
// no-op
}
update
():
void
{
}
public
getData
():
any
{
getData
():
any
{
return
this
.
elements
;
}
}
export
class
DesktopDragAndDropData
implements
IDragAndDropData
{
private
types
:
any
[];
private
files
:
any
[];
readonly
types
:
any
[];
readonly
files
:
any
[];
constructor
()
{
this
.
types
=
[];
this
.
files
=
[];
}
public
update
(
dataTransfer
:
DataTransfer
):
void
{
update
(
dataTransfer
:
DataTransfer
):
void
{
if
(
dataTransfer
.
types
)
{
this
.
types
=
[...
dataTransfer
.
types
]
;
this
.
types
.
splice
(
0
,
this
.
types
.
length
,
...
dataTransfer
.
types
)
;
}
if
(
dataTransfer
.
files
)
{
this
.
files
=
[]
;
this
.
files
.
splice
(
0
,
this
.
files
.
length
)
;
for
(
let
i
=
0
;
i
<
dataTransfer
.
files
.
length
;
i
++
)
{
const
file
=
dataTransfer
.
files
.
item
(
i
);
...
...
@@ -136,7 +132,7 @@ export class DesktopDragAndDropData implements IDragAndDropData {
}
}
public
getData
():
any
{
getData
():
any
{
return
{
types
:
this
.
types
,
files
:
this
.
files
...
...
src/vs/base/browser/ui/tree/abstractTree.ts
浏览文件 @
cb123bcc
...
...
@@ -15,6 +15,7 @@ import { ITreeModel, ITreeNode, ITreeRenderer, ITreeEvent, ITreeMouseEvent, ITre
import
{
ISpliceable
}
from
'
vs/base/common/sequence
'
;
import
{
IDragAndDropData
}
from
'
vs/base/browser/dnd
'
;
import
{
range
}
from
'
vs/base/common/arrays
'
;
import
{
ElementsDragAndDropData
}
from
'
vs/base/browser/ui/list/listView
'
;
class
TreeNodeListDragAndDrop
<
T
,
TFilterData
,
TRef
>
implements
IListDragAndDrop
<
ITreeNode
<
T
,
TFilterData
>>
{
...
...
@@ -42,7 +43,14 @@ class TreeNodeListDragAndDrop<T, TFilterData, TRef> implements IListDragAndDrop<
}
onDragOver
(
data
:
IDragAndDropData
,
targetNode
:
ITreeNode
<
T
,
TFilterData
>
|
undefined
,
targetIndex
:
number
|
undefined
,
originalEvent
:
DragEvent
,
raw
=
true
):
boolean
|
IListDragOverReaction
{
const
result
=
this
.
dnd
.
onDragOver
(
data
,
targetNode
&&
targetNode
.
element
,
targetIndex
,
originalEvent
);
let
treeData
:
IDragAndDropData
=
data
;
if
(
data
instanceof
ElementsDragAndDropData
)
{
const
nodes
=
(
data
as
ElementsDragAndDropData
<
ITreeNode
<
T
,
TFilterData
>>
).
elements
;
treeData
=
new
ElementsDragAndDropData
(
nodes
.
map
(
node
=>
node
.
element
));
}
const
result
=
this
.
dnd
.
onDragOver
(
treeData
,
targetNode
&&
targetNode
.
element
,
targetIndex
,
originalEvent
);
const
didChangeAutoExpandNode
=
this
.
autoExpandNode
!==
targetNode
;
if
(
didChangeAutoExpandNode
)
{
...
...
src/vs/base/browser/ui/tree/asyncDataTree.ts
浏览文件 @
cb123bcc
...
...
@@ -13,6 +13,8 @@ import { timeout, always } from 'vs/base/common/async';
import
{
IListStyles
}
from
'
vs/base/browser/ui/list/listWidget
'
;
import
{
toggleClass
}
from
'
vs/base/browser/dom
'
;
import
{
Iterator
}
from
'
vs/base/common/iterator
'
;
import
{
IDragAndDropData
}
from
'
vs/base/browser/dnd
'
;
import
{
ElementsDragAndDropData
}
from
'
vs/base/browser/ui/list/listView
'
;
enum
AsyncDataTreeNodeState
{
Uninitialized
,
...
...
@@ -147,7 +149,14 @@ function asObjectTreeOptions<TInput, T, TFilterData>(options?: IAsyncDataTreeOpt
}
},
onDragOver
(
data
,
targetNode
,
targetIndex
,
originalEvent
)
{
return
options
.
dnd
!
.
onDragOver
(
data
,
targetNode
&&
targetNode
.
element
as
T
,
targetIndex
,
originalEvent
);
let
treeData
:
IDragAndDropData
=
data
;
if
(
data
instanceof
ElementsDragAndDropData
)
{
const
nodes
=
(
data
as
ElementsDragAndDropData
<
IAsyncDataTreeNode
<
TInput
,
T
>>
).
elements
;
treeData
=
new
ElementsDragAndDropData
(
nodes
.
map
(
node
=>
node
.
element
));
}
return
options
.
dnd
!
.
onDragOver
(
treeData
,
targetNode
&&
targetNode
.
element
as
T
,
targetIndex
,
originalEvent
);
},
drop
(
data
,
targetNode
,
targetIndex
,
originalEvent
)
{
options
.
dnd
!
.
drop
(
data
,
targetNode
&&
targetNode
.
element
as
T
,
targetIndex
,
originalEvent
);
...
...
src/vs/workbench/parts/debug/electron-browser/watchExpressionsView.ts
浏览文件 @
cb123bcc
...
...
@@ -29,6 +29,7 @@ import { IThemeService } from 'vs/platform/theme/common/themeService';
import
{
IAsyncDataSource
,
ITreeMouseEvent
,
ITreeContextMenuEvent
,
ITreeDragAndDrop
,
ITreeDragOverReaction
}
from
'
vs/base/browser/ui/tree/tree
'
;
import
{
IDragAndDropData
}
from
'
vs/base/browser/dnd
'
;
import
{
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
{
ElementsDragAndDropData
}
from
'
vs/base/browser/ui/list/listView
'
;
const
MAX_VALUE_RENDER_LENGTH_IN_VIEWLET
=
1024
;
...
...
@@ -264,9 +265,12 @@ class WatchExpressionsDragAndDrop implements ITreeDragAndDrop<IExpression> {
constructor
(
private
debugService
:
IDebugService
)
{
}
onDragOver
(
data
:
IDragAndDropData
):
boolean
|
ITreeDragOverReaction
{
const
draggedData
=
data
.
getData
();
if
(
!
(
data
instanceof
ElementsDragAndDropData
))
{
return
false
;
}
return
Array
.
isArray
(
draggedData
)
&&
draggedData
[
0
]
&&
draggedData
[
0
].
element
.
element
instanceof
Expression
;
const
expressions
=
(
data
as
ElementsDragAndDropData
<
IExpression
>
).
elements
;
return
expressions
.
length
>
0
&&
expressions
[
0
]
instanceof
Expression
;
}
getDragURI
(
element
:
IExpression
):
string
|
null
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录