Skip to content

Commit 5d39501

Browse files
committed
Change badge position logic
1 parent 02b5373 commit 5d39501

File tree

3 files changed

+68
-3
lines changed

3 files changed

+68
-3
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System;
2+
using System.Globalization;
3+
using System.Windows.Data;
4+
5+
namespace Flow.Launcher.Converters;
6+
7+
public class BadgePositionConverter : IValueConverter
8+
{
9+
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
10+
{
11+
if (value is double actualWidth && parameter is string param)
12+
{
13+
double offset = actualWidth / 2 - 8;
14+
15+
if (param == "1") // X-Offset
16+
{
17+
return offset + 2;
18+
}
19+
else if (param == "2") // Y-Offset
20+
{
21+
return offset + 2;
22+
}
23+
}
24+
25+
return 0.0;
26+
}
27+
28+
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
29+
{
30+
throw new NotSupportedException();
31+
}
32+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System.Windows.Data;
2+
using System;
3+
using System.Globalization;
4+
using System.Windows;
5+
6+
namespace Flow.Launcher.Converters;
7+
8+
public class SizeRatioConverter : IValueConverter
9+
{
10+
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11+
{
12+
if (value is double size && parameter is string ratioString)
13+
{
14+
if (double.TryParse(ratioString, NumberStyles.Any, CultureInfo.InvariantCulture, out double ratio))
15+
{
16+
return size * ratio;
17+
}
18+
}
19+
20+
return 0.0;
21+
}
22+
23+
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
24+
{
25+
throw new NotSupportedException();
26+
}
27+
}

Flow.Launcher/ResultListBox.xaml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
<!-- IsSynchronizedWithCurrentItem: http://stackoverflow.com/a/7833798/2833083 -->
3333

3434
<ListBox.Resources>
35+
<converter:SizeRatioConverter x:Key="SizeRatioConverter" />
36+
<converter:BadgePositionConverter x:Key="BadgePositionConverter" />
3537
<converter:IconRadiusConverter x:Key="IconRadiusConverter" />
3638
<converter:DiameterToCenterPointConverter x:Key="DiameterToCenterPointConverter" />
3739
</ListBox.Resources>
@@ -136,11 +138,15 @@
136138

137139
<Image
138140
x:Name="BadgeIcon"
139-
Width="{Binding ElementName=ImageIcon, Path=ActualWidth}"
140-
Height="{Binding ElementName=ImageIcon, Path=ActualHeight}"
141+
Width="{Binding ElementName=ImageIcon, Path=ActualWidth, Converter={StaticResource SizeRatioConverter}, ConverterParameter=0.6}"
142+
Height="{Binding ElementName=ImageIcon, Path=ActualWidth, Converter={StaticResource SizeRatioConverter}, ConverterParameter=0.6}"
141143
RenderOptions.BitmapScalingMode="HighQuality"
142144
Source="{Binding BadgeImage, TargetNullValue={x:Null}}"
143-
Visibility="{Binding ShowBadge}" />
145+
Visibility="{Binding ShowBadge}">
146+
<Image.RenderTransform>
147+
<TranslateTransform X="{Binding ElementName=ImageIcon, Path=ActualWidth, Converter={StaticResource BadgePositionConverter}, ConverterParameter=1}" Y="{Binding ElementName=ImageIcon, Path=ActualWidth, Converter={StaticResource BadgePositionConverter}, ConverterParameter=2}" />
148+
</Image.RenderTransform>
149+
</Image>
144150
</Grid>
145151
</Border>
146152

0 commit comments

Comments
 (0)