Skip to content

Commit 0a88475

Browse files
authored
Merge pull request #436 from Freeesia/copilot/fix-435
オーバレイ表示の前後関係の安定化
2 parents 4267662 + 10f05d6 commit 0a88475

2 files changed

Lines changed: 29 additions & 0 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System.Globalization;
2+
using System.Windows;
3+
using System.Windows.Data;
4+
5+
namespace WindowTranslator.Data;
6+
7+
[ValueConversion(typeof(TextRect), typeof(int))]
8+
public sealed class AreaToZIndexConverter : IValueConverter
9+
{
10+
/// <summary>デフォルトインスタンスを取得</summary>
11+
public static AreaToZIndexConverter Default { get; } = new AreaToZIndexConverter();
12+
13+
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
14+
{
15+
if (value is not TextRect rect)
16+
{
17+
return DependencyProperty.UnsetValue;
18+
}
19+
20+
// 面積を計算してマイナス値として返す(小さい面積ほど大きなZIndex値になり前面に表示される)
21+
var area = rect.Width * rect.Height;
22+
return -(int)area;
23+
}
24+
25+
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
26+
=> throw new NotImplementedException();
27+
}

WindowTranslator/Themes/Generic.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
MaxValue="10"
3030
MinValue="2"
3131
ScaleFactor="0.15" />
32+
<data:AreaToZIndexConverter x:Key="a2zConv" />
3233
</ItemsControl.Resources>
3334
<ItemsControl.ItemsPanel>
3435
<ItemsPanelTemplate>
@@ -112,6 +113,7 @@
112113
<Style TargetType="ContentPresenter">
113114
<Setter Property="Canvas.Top" Value="{Binding Y}" />
114115
<Setter Property="Canvas.Left" Value="{Binding X}" />
116+
<Setter Property="Panel.ZIndex" Value="{Binding Converter={StaticResource a2zConv}}" />
115117
<Setter Property="Visibility">
116118
<Setter.Value>
117119
<MultiBinding Converter="{x:Static data:TextOverlayVisibilityConverter.Default}">

0 commit comments

Comments
 (0)