Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lindexi_gd
Uno
提交
4a4d848f
U
Uno
项目概览
lindexi_gd
/
Uno
11 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
Uno
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4a4d848f
编写于
3月 22, 2023
作者:
M
Martin Zikmund
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: Use explicit XamlRoot for GetFocusedElement where possible
上级
7a1e9fbf
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
44 addition
and
16 deletion
+44
-16
src/Uno.UI/Microsoft/UI/Xaml/Controls/Breadcrumb/BreadcrumbBar.cs
...UI/Microsoft/UI/Xaml/Controls/Breadcrumb/BreadcrumbBar.cs
+3
-1
src/Uno.UI/Microsoft/UI/Xaml/Controls/RadioButtons/RadioButtons.cs
...I/Microsoft/UI/Xaml/Controls/RadioButtons/RadioButtons.cs
+1
-1
src/Uno.UI/Microsoft/UI/Xaml/Controls/Repeater/ViewManager.cs
...Uno.UI/Microsoft/UI/Xaml/Controls/Repeater/ViewManager.cs
+4
-1
src/Uno.UI/UI/Xaml/Controls/CalendarView/CalendarViewBaseItem.cs
....UI/UI/Xaml/Controls/CalendarView/CalendarViewBaseItem.cs
+4
-1
src/Uno.UI/UI/Xaml/Controls/CommandBar/CommandBar.Partial.cs
src/Uno.UI/UI/Xaml/Controls/CommandBar/CommandBar.Partial.cs
+12
-5
src/Uno.UI/UI/Xaml/Controls/ListViewBase/ListViewBase.cs
src/Uno.UI/UI/Xaml/Controls/ListViewBase/ListViewBase.cs
+8
-2
src/Uno.UI/UI/Xaml/Controls/MenuFlyout/MenuFlyoutPresenter.cs
...Uno.UI/UI/Xaml/Controls/MenuFlyout/MenuFlyoutPresenter.cs
+6
-2
src/Uno.UI/UI/Xaml/Controls/Popup/Popup.WithPopupRoot.cs
src/Uno.UI/UI/Xaml/Controls/Popup/Popup.WithPopupRoot.cs
+1
-1
src/Uno.UI/UI/Xaml/Internal/RootVisual.cs
src/Uno.UI/UI/Xaml/Internal/RootVisual.cs
+5
-2
未找到文件。
src/Uno.UI/Microsoft/UI/Xaml/Controls/Breadcrumb/BreadcrumbBar.cs
浏览文件 @
4a4d848f
...
...
@@ -504,7 +504,9 @@ public partial class BreadcrumbBar : Control
{
if
(
m_itemsRepeater
is
{
}
itemsRepeater
)
{
var
focusedElem
=
FocusManager
.
GetFocusedElement
();
var
focusedElem
=
XamlRoot
is
null
?
FocusManager
.
GetFocusedElement
()
:
FocusManager
.
GetFocusedElement
(
XamlRoot
);
if
(
focusedElem
is
UIElement
focusedElement
)
{
...
...
src/Uno.UI/Microsoft/UI/Xaml/Controls/RadioButtons/RadioButtons.cs
浏览文件 @
4a4d848f
...
...
@@ -509,7 +509,7 @@ namespace Microsoft.UI.Xaml.Controls
var
repeater
=
m_repeater
;
if
(
repeater
!=
null
)
{
var
focusedElement
=
FocusManager
.
GetFocusedElement
()
as
UIElement
;
var
focusedElement
=
FocusManager
.
GetFocusedElement
(
XamlRoot
)
as
UIElement
;
if
(
focusedElement
!=
null
)
{
var
focusedIndex
=
repeater
.
GetElementIndex
(
focusedElement
);
...
...
src/Uno.UI/Microsoft/UI/Xaml/Controls/Repeater/ViewManager.cs
浏览文件 @
4a4d848f
...
...
@@ -910,7 +910,10 @@ namespace Microsoft.UI.Xaml.Controls
{
UIElement
focusedElement
=
null
;
if
(
FocusManager
.
GetFocusedElement
()
is
DependencyObject
child
)
var
focusedObject
=
m_owner
?.
XamlRoot
is
null
?
FocusManager
.
GetFocusedElement
()
:
FocusManager
.
GetFocusedElement
(
m_owner
.
XamlRoot
);
if
(
focusedObject
is
DependencyObject
child
)
{
var
parent
=
CachedVisualTreeHelpers
.
GetParent
(
child
);
var
owner
=
(
UIElement
)
m_owner
;
...
...
src/Uno.UI/UI/Xaml/Controls/CalendarView/CalendarViewBaseItem.cs
浏览文件 @
4a4d848f
...
...
@@ -280,7 +280,10 @@ namespace Windows.UI.Xaml.Controls
{
// Re-focus the currently focused item to propagate focusState (the item might be focused
// under a different FocusState value).
spItemToFocus
=
FocusManager
.
GetFocusedElement
()
as
DependencyObject
;
var
focusedElement
=
XamlRoot
is
null
?
FocusManager
.
GetFocusedElement
()
:
FocusManager
.
GetFocusedElement
(
XamlRoot
);
spItemToFocus
=
focusedElement
as
DependencyObject
;
}
else
{
...
...
src/Uno.UI/UI/Xaml/Controls/CommandBar/CommandBar.Partial.cs
浏览文件 @
4a4d848f
...
...
@@ -711,7 +711,9 @@ namespace Windows.UI.Xaml.Controls
}
// Only handle the up/down keys when focus is on the more/expand button.
var
focusedElement
=
FocusManager
.
GetFocusedElement
();
var
focusedElement
=
XamlRoot
is
null
?
FocusManager
.
GetFocusedElement
()
:
FocusManager
.
GetFocusedElement
(
XamlRoot
);
if
(
m_tpExpandButton
==
focusedElement
)
{
bool
isOpen
=
IsOpen
;
...
...
@@ -756,7 +758,9 @@ namespace Windows.UI.Xaml.Controls
private
void
ShiftFocusVerticallyInOverflow
(
bool
topToBottom
,
bool
allowFocusWrap
=
true
)
{
var
focusedElement
=
FocusManager
.
GetFocusedElement
();
var
focusedElement
=
XamlRoot
is
null
?
FocusManager
.
GetFocusedElement
()
:
FocusManager
.
GetFocusedElement
(
XamlRoot
);
DependencyObject
?
referenceElement
=
null
;
if
(
topToBottom
)
...
...
@@ -808,7 +812,9 @@ namespace Windows.UI.Xaml.Controls
// focus is currently on the first/last item depending on direction.
if
(!
shouldFocusLeaveOverflow
)
{
var
focusedElement
=
FocusManager
.
GetFocusedElement
();
var
focusedElement
=
XamlRoot
is
null
?
FocusManager
.
GetFocusedElement
()
:
FocusManager
.
GetFocusedElement
(
XamlRoot
);
DependencyObject
?
referenceElement
=
null
;
if
(
isShiftKeyPressed
)
...
...
@@ -1033,13 +1039,14 @@ namespace Windows.UI.Xaml.Controls
return
result
;
}
private
void
ShiftFocusHorizontally
(
bool
moveToRight
)
{
// Determine whether we should shift focus horizontally.
if
(
m_tpContentControl
is
{
})
{
var
focusedElement
=
FocusManager
.
GetFocusedElement
();
var
focusedElement
=
XamlRoot
is
null
?
FocusManager
.
GetFocusedElement
()
:
FocusManager
.
GetFocusedElement
(
XamlRoot
);
// Don't do it if focus is in the custom content area.
var
isChildOfContentControl
=
m_tpContentControl
.
IsAncestorOf
(
focusedElement
as
DependencyObject
);
...
...
src/Uno.UI/UI/Xaml/Controls/ListViewBase/ListViewBase.cs
浏览文件 @
4a4d848f
...
...
@@ -90,7 +90,10 @@ namespace Windows.UI.Xaml.Controls
return
false
;
}
var
focusedContainer
=
FocusManager
.
GetFocusedElement
()
as
SelectorItem
;
var
focusedElement
=
XamlRoot
is
null
?
FocusManager
.
GetFocusedElement
()
:
FocusManager
.
GetFocusedElement
(
XamlRoot
);
var
focusedContainer
=
focusedElement
as
SelectorItem
;
if
(
args
.
Key
==
VirtualKey
.
Enter
||
args
.
Key
==
VirtualKey
.
Space
)
...
...
@@ -150,7 +153,10 @@ namespace Windows.UI.Xaml.Controls
private
int
GetFocusedItemIndex
()
{
var
focusedItem
=
FocusManager
.
GetFocusedElement
()
as
SelectorItem
;
var
focusedElement
=
XamlRoot
is
null
?
FocusManager
.
GetFocusedElement
()
:
FocusManager
.
GetFocusedElement
(
XamlRoot
);
var
focusedItem
=
focusedElement
as
SelectorItem
;
if
(
focusedItem
!=
null
)
{
return
IndexFromContainer
(
focusedItem
);
...
...
src/Uno.UI/UI/Xaml/Controls/MenuFlyout/MenuFlyoutPresenter.cs
浏览文件 @
4a4d848f
...
...
@@ -802,7 +802,9 @@ namespace Windows.UI.Xaml.Controls
{
// A child element got focus, so make sure we keep m_iFocusedIndex in sync
// with it.
var
focusedElement
=
FocusManager
.
GetFocusedElement
()
as
DependencyObject
;
var
focusedElement
=
(
XamlRoot
is
null
?
FocusManager
.
GetFocusedElement
()
:
FocusManager
.
GetFocusedElement
(
XamlRoot
))
as
DependencyObject
;
// Since GotFocus is an async event, the focused element could be null if we got it
// after the popup closes, which clears focus.
...
...
@@ -823,7 +825,9 @@ namespace Windows.UI.Xaml.Controls
{
if
(
m_iFocusedIndex
==
-
1
)
{
var
focusedElement
=
FocusManager
.
GetFocusedElement
();
var
focusedElement
=
XamlRoot
is
null
?
FocusManager
.
GetFocusedElement
()
:
FocusManager
.
GetFocusedElement
(
XamlRoot
);
if
(
this
!=
focusedElement
)
{
...
...
src/Uno.UI/UI/Xaml/Controls/Popup/Popup.WithPopupRoot.cs
浏览文件 @
4a4d848f
...
...
@@ -86,7 +86,7 @@ public partial class Popup
{
#if !HAS_UNO_WINUI
// In UWP, XamlRoot is set automatically to CoreWindow XamlRoot if not set beforehand.
if
(
XamlRoot
is
null
&&
Child
?.
XamlRoot
is
null
)
if
(
XamlRoot
is
null
&&
Child
?.
XamlRoot
is
null
&&
CoreServices
.
Instance
.
InitializationType
!=
InitializationType
.
IslandsOnly
)
{
XamlRoot
=
CoreServices
.
Instance
.
ContentRootCoordinator
.
CoreWindowContentRoot
.
XamlRoot
;
}
...
...
src/Uno.UI/UI/Xaml/Internal/RootVisual.cs
浏览文件 @
4a4d848f
...
...
@@ -152,7 +152,7 @@ namespace Uno.UI.Xaml.Core
}
#endif
internal
static
void
ProcessPointerUp
(
PointerRoutedEventArgs
args
,
bool
isAfterHandledUp
=
false
)
internal
void
ProcessPointerUp
(
PointerRoutedEventArgs
args
,
bool
isAfterHandledUp
=
false
)
{
// We don't want handled events raised on RootVisual,
// instead we wait for the element that handled it to directly forward it to us,
...
...
@@ -183,11 +183,14 @@ namespace Uno.UI.Xaml.Core
// Uno specific: To ensure focus is properly lost when clicking "outside" app's content,
// we set focus here. In case UWP, focus is set to the root ScrollViewer instead,
// but Uno does not have it on all targets yet.
var
focusedElement
=
XamlRoot
is
null
?
FocusManager
.
GetFocusedElement
()
:
FocusManager
.
GetFocusedElement
(
XamlRoot
);
if
(!
isHandled
// so isAfterHandledUp is false!
&&
_canUnFocusOnNextLeftPointerRelease
&&
args
.
GetCurrentPoint
(
null
).
Properties
.
PointerUpdateKind
is
PointerUpdateKind
.
LeftButtonReleased
&&
!
PointerCapture
.
TryGet
(
args
.
Pointer
,
out
_
)
&&
FocusManager
.
GetFocusedElement
()
is
UIElement
uiElement
)
&&
focusedElement
is
UIElement
uiElement
)
{
uiElement
.
Unfocus
();
args
.
Handled
=
true
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录