Skip to content

Commit b826941

Browse files
Take hover/focus state into account + ignore margins on hidden elements
1 parent 9edfe0b commit b826941

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

src/MaterialDesignThemes.Wpf/Converters/TextBoxHorizontalScrollBarMarginConverter.cs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,23 @@ public class TextBoxHorizontalScrollBarMarginConverter : IMultiValueConverter
1111
double leadingIconWidth,
1212
Thickness leadingIconMargin,
1313
double prefixTextWidth,
14-
Thickness prefixTextMargin])
14+
Thickness prefixTextMargin,
15+
bool isMouseOver,
16+
bool hasKeyboardFocus])
1517
{
16-
double offset = leadingIconWidth + leadingIconMargin.Left + leadingIconMargin.Right + prefixTextWidth + prefixTextMargin.Left + prefixTextMargin.Right;
17-
return new Thickness(offset, 1, 0, 0);
18+
double iconMargin = leadingIconWidth > 0 ? leadingIconMargin.Left + leadingIconMargin.Right : 0;
19+
double prefixMargin = prefixTextWidth > 0 ? prefixTextMargin.Left + prefixTextMargin.Right : 0;
20+
double offset = leadingIconWidth + iconMargin + prefixTextWidth + prefixMargin;
21+
double bottomOffset = 0;
22+
double topOffset = 0;
23+
24+
if (isMouseOver || hasKeyboardFocus)
25+
{
26+
offset -= 1;
27+
topOffset += 1;
28+
bottomOffset -= 1;
29+
}
30+
return new Thickness(offset, topOffset, 0, bottomOffset);
1831
}
1932
return new Thickness(0);
2033
}

src/MaterialDesignThemes.Wpf/Converters/TextBoxHorizontalScrollBarWidthConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class TextBoxHorizontalScrollBarWidthConverter : IMultiValueConverter
99
{
1010
if (values is [double contentHostWidth, Visibility verticalScrollBarVisibility])
1111
{
12-
return contentHostWidth - (verticalScrollBarVisibility == Visibility.Visible ? SystemParameters.VerticalScrollBarWidth + 1 : 0);
12+
return contentHostWidth - (verticalScrollBarVisibility == Visibility.Visible ? SystemParameters.VerticalScrollBarWidth : 0);
1313
}
1414
return double.NaN;
1515
}

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TextBox.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,8 @@
314314
<Binding ElementName="LeadingPackIcon" Path="Margin" />
315315
<Binding ElementName="PrefixTextBlock" Path="ActualWidth" />
316316
<Binding ElementName="PrefixTextBlock" Path="Margin" />
317+
<Binding RelativeSource="{RelativeSource AncestorType=TextBox}" Path="IsMouseOver" />
318+
<Binding RelativeSource="{RelativeSource AncestorType=TextBox}" Path="IsKeyboardFocusWithin" />
317319
</MultiBinding>
318320
</ScrollBar.Margin>
319321
<ScrollBar.Width>

0 commit comments

Comments
 (0)