Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lindexi_gd
Uno
提交
7dc99f2b
U
Uno
项目概览
lindexi_gd
/
Uno
大约 1 年 前同步成功
通知
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,发现更多精彩内容 >>
提交
7dc99f2b
编写于
3月 14, 2023
作者:
M
Martin Zikmund
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: Popup and Flyout placement within Islands
上级
6998e428
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
24 addition
and
3 deletion
+24
-3
src/Uno.UI/UI/Xaml/Controls/Flyout/FlyoutBase.cs
src/Uno.UI/UI/Xaml/Controls/Flyout/FlyoutBase.cs
+17
-1
src/Uno.UI/UI/Xaml/Controls/Popup/PopupPanel.Placement.cs
src/Uno.UI/UI/Xaml/Controls/Popup/PopupPanel.Placement.cs
+7
-2
未找到文件。
src/Uno.UI/UI/Xaml/Controls/Flyout/FlyoutBase.cs
浏览文件 @
7dc99f2b
...
...
@@ -15,6 +15,7 @@ using Windows.UI.Core;
using
Windows.UI.ViewManagement
;
using
Windows.UI.Xaml
;
using
Windows.UI.Xaml.Media
;
using
WinUICoreServices
=
Uno
.
UI
.
Xaml
.
Core
.
CoreServices
;
#if XAMARIN_IOS
using
View
=
UIKit
.
UIView
;
...
...
@@ -328,7 +329,16 @@ namespace Windows.UI.Xaml.Controls.Primitives
throw
new
ArgumentException
(
"Invalid flyout position"
);
}
var
visibleBounds
=
ApplicationView
.
GetForCurrentView
().
VisibleBounds
;
Rect
visibleBounds
;
if
(
WinUICoreServices
.
Instance
.
InitializationType
==
Uno
.
UI
.
Xaml
.
Core
.
InitializationType
.
IslandsOnly
)
{
var
xamlRoot
=
XamlRoot
??
placementTarget
?.
XamlRoot
;
visibleBounds
=
xamlRoot
.
Bounds
;
}
else
{
visibleBounds
=
ApplicationView
.
GetForCurrentView
().
VisibleBounds
;
}
positionValue
=
new
Point
(
positionValue
.
X
.
Clamp
(
visibleBounds
.
Left
,
visibleBounds
.
Right
),
positionValue
.
Y
.
Clamp
(
visibleBounds
.
Top
,
visibleBounds
.
Bottom
));
...
...
@@ -517,6 +527,12 @@ namespace Windows.UI.Xaml.Controls.Primitives
{
// UNO TODO: UWP also uses values coming from the input pane and app bars, if any.
// Make sure of migrate to XamlRoot: https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.xamlroot
if
(
WinUICoreServices
.
Instance
.
InitializationType
==
Uno
.
UI
.
Xaml
.
Core
.
InitializationType
.
IslandsOnly
)
{
var
xamlRoot
=
popup
.
XamlRoot
??
popup
.
Child
?.
XamlRoot
;
return
xamlRoot
.
Bounds
;
}
return
ApplicationView
.
GetForCurrentView
().
VisibleBounds
;
}
...
...
src/Uno.UI/UI/Xaml/Controls/Popup/PopupPanel.Placement.cs
浏览文件 @
7dc99f2b
...
...
@@ -5,6 +5,7 @@ using Windows.UI.ViewManagement;
using
Uno.UI
;
using
Uno.Foundation.Logging
;
using
System.Linq
;
using
WinUICoreServices
=
Uno
.
UI
.
Xaml
.
Core
.
CoreServices
;
#if HAS_UNO_WINUI
...
...
@@ -91,7 +92,7 @@ partial class PopupPanel
if
(
Flyout
?.
IsTargetPositionSet
??
false
)
{
rect
=
Flyout
.
UpdateTargetPosition
(
ApplicationView
.
GetForCurrentView
().
VisibleBounds
,
desiredSize
,
rect
);
rect
=
Flyout
.
UpdateTargetPosition
(
GetVisibleBounds
()
,
desiredSize
,
rect
);
}
child
.
Arrange
(
rect
);
...
...
@@ -116,7 +117,7 @@ partial class PopupPanel
{
var
anchorRect
=
GetAnchorRect
(
popup
);
var
visibleBounds
=
ApplicationView
.
GetForCurrentView
().
VisibleBounds
;
var
visibleBounds
=
GetVisibleBounds
()
;
// Make sure the desiredSize fits in the panel
desiredSize
.
Width
=
Math
.
Min
(
desiredSize
.
Width
,
visibleBounds
.
Width
);
...
...
@@ -376,4 +377,8 @@ partial class PopupPanel
return
fits
;
}
private
Rect
GetVisibleBounds
()
=>
WinUICoreServices
.
Instance
.
InitializationType
==
Uno
.
UI
.
Xaml
.
Core
.
InitializationType
.
IslandsOnly
?
XamlRoot
.
Bounds
:
ApplicationView
.
GetForCurrentView
().
VisibleBounds
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录