Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
4140affe
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,发现更多精彩内容 >>
提交
4140affe
编写于
12月 23, 2020
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
breadcrumbs picker must restore view state when being dismissed
上级
7cc87833
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
36 addition
and
36 deletion
+36
-36
src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts
src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts
+10
-30
src/vs/workbench/browser/parts/editor/breadcrumbsPicker.ts
src/vs/workbench/browser/parts/editor/breadcrumbsPicker.ts
+5
-0
src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsOutline.ts
...trib/codeEditor/browser/outline/documentSymbolsOutline.ts
+10
-4
src/vs/workbench/contrib/notebook/browser/contrib/outline/notebookOutline.ts
...ntrib/notebook/browser/contrib/outline/notebookOutline.ts
+10
-2
src/vs/workbench/services/outline/browser/outline.ts
src/vs/workbench/services/outline/browser/outline.ts
+1
-0
未找到文件。
src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts
浏览文件 @
4140affe
...
@@ -13,9 +13,7 @@ import { combinedDisposable, DisposableStore, toDisposable } from 'vs/base/commo
...
@@ -13,9 +13,7 @@ import { combinedDisposable, DisposableStore, toDisposable } from 'vs/base/commo
import
{
extUri
}
from
'
vs/base/common/resources
'
;
import
{
extUri
}
from
'
vs/base/common/resources
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
'
vs/css!./media/breadcrumbscontrol
'
;
import
'
vs/css!./media/breadcrumbscontrol
'
;
import
{
ICodeEditor
,
isCodeEditor
,
isDiffEditor
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
ICodeEditorViewState
}
from
'
vs/editor/common/editorCommon
'
;
import
{
OutlineElement
,
OutlineModel
}
from
'
vs/editor/contrib/documentSymbols/outlineModel
'
;
import
{
OutlineElement
,
OutlineModel
}
from
'
vs/editor/contrib/documentSymbols/outlineModel
'
;
import
{
localize
}
from
'
vs/nls
'
;
import
{
localize
}
from
'
vs/nls
'
;
import
{
MenuId
,
MenuRegistry
}
from
'
vs/platform/actions/common/actions
'
;
import
{
MenuId
,
MenuRegistry
}
from
'
vs/platform/actions/common/actions
'
;
...
@@ -313,7 +311,7 @@ export class BreadcrumbsControl {
...
@@ -313,7 +311,7 @@ export class BreadcrumbsControl {
this
.
_breadcrumbsDisposables
.
add
({
this
.
_breadcrumbsDisposables
.
add
({
dispose
:
()
=>
{
dispose
:
()
=>
{
if
(
this
.
_breadcrumbsPickerShowing
)
{
if
(
this
.
_breadcrumbsPickerShowing
)
{
this
.
_contextViewService
.
hideContextView
(
this
);
this
.
_contextViewService
.
hideContextView
(
{
source
:
this
}
);
}
}
}
}
});
});
...
@@ -321,20 +319,6 @@ export class BreadcrumbsControl {
...
@@ -321,20 +319,6 @@ export class BreadcrumbsControl {
return
true
;
return
true
;
}
}
private
_getActiveCodeEditor
():
ICodeEditor
|
undefined
{
if
(
!
this
.
_editorGroup
.
activeEditorPane
)
{
return
undefined
;
}
let
control
=
this
.
_editorGroup
.
activeEditorPane
.
getControl
();
let
editor
:
ICodeEditor
|
undefined
;
if
(
isCodeEditor
(
control
))
{
editor
=
control
as
ICodeEditor
;
}
else
if
(
isDiffEditor
(
control
))
{
editor
=
control
.
getModifiedEditor
();
}
return
editor
;
}
private
_onFocusEvent
(
event
:
IBreadcrumbsItemEvent
):
void
{
private
_onFocusEvent
(
event
:
IBreadcrumbsItemEvent
):
void
{
if
(
event
.
item
&&
this
.
_breadcrumbsPickerShowing
)
{
if
(
event
.
item
&&
this
.
_breadcrumbsPickerShowing
)
{
this
.
_breadcrumbsPickerIgnoreOnceItem
=
undefined
;
this
.
_breadcrumbsPickerIgnoreOnceItem
=
undefined
;
...
@@ -381,9 +365,8 @@ export class BreadcrumbsControl {
...
@@ -381,9 +365,8 @@ export class BreadcrumbsControl {
// show picker
// show picker
let
picker
:
BreadcrumbsPicker
;
let
picker
:
BreadcrumbsPicker
;
let
pickerAnchor
:
{
x
:
number
;
y
:
number
};
let
pickerAnchor
:
{
x
:
number
;
y
:
number
};
let
editor
=
this
.
_getActiveCodeEditor
();
let
editorDecorations
:
string
[]
=
[];
interface
IHideData
{
didPick
?:
boolean
,
source
?:
BreadcrumbsControl
}
let
editorViewState
:
ICodeEditorViewState
|
undefined
;
this
.
_contextViewService
.
showContextView
({
this
.
_contextViewService
.
showContextView
({
render
:
(
parent
:
HTMLElement
)
=>
{
render
:
(
parent
:
HTMLElement
)
=>
{
...
@@ -393,13 +376,13 @@ export class BreadcrumbsControl {
...
@@ -393,13 +376,13 @@ export class BreadcrumbsControl {
picker
=
this
.
_instantiationService
.
createInstance
(
BreadcrumbsOutlinePicker
,
parent
,
event
.
item
.
model
.
resource
);
picker
=
this
.
_instantiationService
.
createInstance
(
BreadcrumbsOutlinePicker
,
parent
,
event
.
item
.
model
.
resource
);
}
}
let
selectListener
=
picker
.
onDidPickElement
(()
=>
this
.
_contextViewService
.
hideContextView
(
this
));
let
selectListener
=
picker
.
onDidPickElement
(()
=>
this
.
_contextViewService
.
hideContextView
(
{
source
:
this
,
didPick
:
true
}
));
let
zoomListener
=
onDidChangeZoomLevel
(()
=>
this
.
_contextViewService
.
hideContextView
(
this
));
let
zoomListener
=
onDidChangeZoomLevel
(()
=>
this
.
_contextViewService
.
hideContextView
(
{
source
:
this
}
));
let
focusTracker
=
dom
.
trackFocus
(
parent
);
let
focusTracker
=
dom
.
trackFocus
(
parent
);
let
blurListener
=
focusTracker
.
onDidBlur
(()
=>
{
let
blurListener
=
focusTracker
.
onDidBlur
(()
=>
{
this
.
_breadcrumbsPickerIgnoreOnceItem
=
this
.
_widget
.
isDOMFocused
()
?
event
.
item
:
undefined
;
this
.
_breadcrumbsPickerIgnoreOnceItem
=
this
.
_widget
.
isDOMFocused
()
?
event
.
item
:
undefined
;
this
.
_contextViewService
.
hideContextView
(
this
);
this
.
_contextViewService
.
hideContextView
(
{
source
:
this
}
);
});
});
this
.
_breadcrumbsPickerShowing
=
true
;
this
.
_breadcrumbsPickerShowing
=
true
;
...
@@ -446,16 +429,13 @@ export class BreadcrumbsControl {
...
@@ -446,16 +429,13 @@ export class BreadcrumbsControl {
}
}
return
pickerAnchor
;
return
pickerAnchor
;
},
},
onHide
:
(
data
)
=>
{
onHide
:
(
data
?:
IHideData
)
=>
{
if
(
editor
)
{
if
(
!
data
?.
didPick
)
{
editor
.
deltaDecorations
(
editorDecorations
,
[]);
picker
.
restoreViewState
();
if
(
editorViewState
)
{
editor
.
restoreViewState
(
editorViewState
);
}
}
}
this
.
_breadcrumbsPickerShowing
=
false
;
this
.
_breadcrumbsPickerShowing
=
false
;
this
.
_updateCkBreadcrumbsActive
();
this
.
_updateCkBreadcrumbsActive
();
if
(
data
===
this
)
{
if
(
data
?.
source
===
this
)
{
this
.
_widget
.
setFocused
(
undefined
);
this
.
_widget
.
setFocused
(
undefined
);
this
.
_widget
.
setSelection
(
undefined
);
this
.
_widget
.
setSelection
(
undefined
);
}
}
...
...
src/vs/workbench/browser/parts/editor/breadcrumbsPicker.ts
浏览文件 @
4140affe
...
@@ -149,6 +149,8 @@ export abstract class BreadcrumbsPicker {
...
@@ -149,6 +149,8 @@ export abstract class BreadcrumbsPicker {
this
.
_tree
.
layout
(
treeHeight
,
this
.
_layoutInfo
.
width
);
this
.
_tree
.
layout
(
treeHeight
,
this
.
_layoutInfo
.
width
);
}
}
restoreViewState
():
void
{
}
protected
abstract
_setInput
(
element
:
FileElement
|
OutlineElement2
):
Promise
<
void
>
;
protected
abstract
_setInput
(
element
:
FileElement
|
OutlineElement2
):
Promise
<
void
>
;
protected
abstract
_createTree
(
container
:
HTMLElement
,
input
:
any
):
Tree
<
any
,
any
>
;
protected
abstract
_createTree
(
container
:
HTMLElement
,
input
:
any
):
Tree
<
any
,
any
>
;
protected
abstract
_previewElement
(
element
:
any
):
IDisposable
;
protected
abstract
_previewElement
(
element
:
any
):
IDisposable
;
...
@@ -493,6 +495,9 @@ export class BreadcrumbsOutlinePicker extends BreadcrumbsPicker {
...
@@ -493,6 +495,9 @@ export class BreadcrumbsOutlinePicker extends BreadcrumbsPicker {
protected
_setInput
(
input
:
OutlineElement2
):
Promise
<
void
>
{
protected
_setInput
(
input
:
OutlineElement2
):
Promise
<
void
>
{
const
viewState
=
input
.
outline
.
captureViewState
();
this
.
restoreViewState
=
()
=>
{
viewState
.
dispose
();
};
const
tree
=
this
.
_tree
as
WorkbenchDataTree
<
IOutline
<
any
>
,
any
,
FuzzyScore
>
;
const
tree
=
this
.
_tree
as
WorkbenchDataTree
<
IOutline
<
any
>
,
any
,
FuzzyScore
>
;
tree
.
setInput
(
input
.
outline
);
tree
.
setInput
(
input
.
outline
);
...
...
src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsOutline.ts
浏览文件 @
4140affe
...
@@ -265,10 +265,7 @@ class DocumentSymbolsOutline implements IOutline<DocumentSymbolItem> {
...
@@ -265,10 +265,7 @@ class DocumentSymbolsOutline implements IOutline<DocumentSymbolItem> {
if
(
!
(
entry
instanceof
OutlineElement
))
{
if
(
!
(
entry
instanceof
OutlineElement
))
{
return
Disposable
.
None
;
return
Disposable
.
None
;
}
}
// todo@jrieken
// if (!editorViewState) {
// editorViewState = withNullAsUndefined(editor.saveViewState());
// }
const
{
symbol
}
=
entry
;
const
{
symbol
}
=
entry
;
this
.
_editor
.
revealRangeInCenterIfOutsideViewport
(
symbol
.
range
,
ScrollType
.
Smooth
);
this
.
_editor
.
revealRangeInCenterIfOutsideViewport
(
symbol
.
range
,
ScrollType
.
Smooth
);
const
ids
=
this
.
_editor
.
deltaDecorations
([],
[{
const
ids
=
this
.
_editor
.
deltaDecorations
([],
[{
...
@@ -281,6 +278,15 @@ class DocumentSymbolsOutline implements IOutline<DocumentSymbolItem> {
...
@@ -281,6 +278,15 @@ class DocumentSymbolsOutline implements IOutline<DocumentSymbolItem> {
return
toDisposable
(()
=>
this
.
_editor
.
deltaDecorations
(
ids
,
[]));
return
toDisposable
(()
=>
this
.
_editor
.
deltaDecorations
(
ids
,
[]));
}
}
captureViewState
():
IDisposable
{
const
viewState
=
this
.
_editor
.
saveViewState
();
return
toDisposable
(()
=>
{
if
(
viewState
)
{
this
.
_editor
.
restoreViewState
(
viewState
);
}
});
}
private
async
_createOutline
(
contentChangeEvent
?:
IModelContentChangedEvent
):
Promise
<
void
>
{
private
async
_createOutline
(
contentChangeEvent
?:
IModelContentChangedEvent
):
Promise
<
void
>
{
this
.
_outlineDisposables
.
clear
();
this
.
_outlineDisposables
.
clear
();
...
...
src/vs/workbench/contrib/notebook/browser/contrib/outline/notebookOutline.ts
浏览文件 @
4140affe
...
@@ -482,9 +482,17 @@ class NotebookCellOutline implements IOutline<OutlineEntry> {
...
@@ -482,9 +482,17 @@ class NotebookCellOutline implements IOutline<OutlineEntry> {
}
}
getParent
(
_entry
:
OutlineEntry
):
OutlineEntry
|
undefined
{
captureViewState
():
IDisposable
{
return
undefined
;
const
widget
=
this
.
_editor
.
getControl
();
let
viewState
=
widget
?.
getEditorViewState
();
return
toDisposable
(()
=>
{
if
(
viewState
)
{
widget
?.
restoreListViewState
(
viewState
);
}
});
}
}
}
}
class
NotebookOutlineCreator
implements
IOutlineCreator
<
NotebookEditor
,
OutlineEntry
>
{
class
NotebookOutlineCreator
implements
IOutlineCreator
<
NotebookEditor
,
OutlineEntry
>
{
...
...
src/vs/workbench/services/outline/browser/outline.ts
浏览文件 @
4140affe
...
@@ -82,5 +82,6 @@ export interface IOutline<E> {
...
@@ -82,5 +82,6 @@ export interface IOutline<E> {
reveal
(
entry
:
E
,
options
:
IEditorOptions
,
sideBySide
:
boolean
):
Promise
<
void
>
|
void
;
reveal
(
entry
:
E
,
options
:
IEditorOptions
,
sideBySide
:
boolean
):
Promise
<
void
>
|
void
;
preview
(
entry
:
E
):
IDisposable
;
preview
(
entry
:
E
):
IDisposable
;
captureViewState
():
IDisposable
;
dispose
():
void
;
dispose
():
void
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录