Skip to content

Commit 1e2c54e

Browse files
committed
fix visibility for Icon
1 parent 2f14b40 commit 1e2c54e

File tree

2 files changed

+57
-7
lines changed

2 files changed

+57
-7
lines changed

MahApps.Metro/Controls/MetroWindow.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ private static void OnShowIconOnTitleBarPropertyChangedCallback(DependencyObject
324324
var window = (MetroWindow)d;
325325
if (e.NewValue != e.OldValue)
326326
{
327-
window.SetVisibiltyForIcon((bool)e.NewValue);
327+
window.SetVisibiltyForIcon();
328328
}
329329
}
330330

@@ -492,21 +492,20 @@ private static void TitlebarHeightPropertyChangedCallback(DependencyObject depen
492492
}
493493
}
494494

495-
private void SetVisibiltyForIcon(bool visible)
495+
private void SetVisibiltyForIcon()
496496
{
497497
if (this.icon != null)
498498
{
499-
var iconVisibility = (this.IconOverlayBehavior.HasFlag(WindowCommandsOverlayBehavior.HiddenTitleBar) && !this.ShowTitleBar)
500-
|| (visible && this.ShowTitleBar)
501-
? Visibility.Visible
502-
: Visibility.Collapsed;
499+
var isVisible = (this.IconOverlayBehavior.HasFlag(WindowCommandsOverlayBehavior.HiddenTitleBar) && !this.ShowTitleBar)
500+
|| (this.ShowIconOnTitleBar && this.ShowTitleBar);
501+
var iconVisibility = isVisible ? Visibility.Visible : Visibility.Collapsed;
503502
this.icon.Visibility = iconVisibility;
504503
}
505504
}
506505

507506
private void SetVisibiltyForAllTitleElements(bool visible)
508507
{
509-
this.SetVisibiltyForIcon(visible);
508+
this.SetVisibiltyForIcon();
510509
var newVisibility = visible && this.ShowTitleBar ? Visibility.Visible : Visibility.Collapsed;
511510
if (this.titleBar != null)
512511
{

Mahapps.Metro.Tests/MetroWindowTest.cs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,57 @@ public async Task IconShouldBeVisibleByDefault()
3838
Assert.Equal(Visibility.Visible, icon.Visibility);
3939
}
4040

41+
[Fact]
42+
public async Task IconShouldBeCollapsedWithShowIconOnTitleBarFalse()
43+
{
44+
await TestHost.SwitchToAppThread();
45+
46+
var window = await WindowHelpers.CreateInvisibleWindowAsync<MetroWindow>(w => w.ShowIconOnTitleBar = false);
47+
var icon = window.GetPart<ContentControl>("PART_Icon");
48+
49+
Assert.Equal(Visibility.Collapsed, icon.Visibility);
50+
}
51+
52+
[Fact]
53+
public async Task IconShouldBeCollapsedWithShowTitleBarFalse()
54+
{
55+
await TestHost.SwitchToAppThread();
56+
57+
var window = await WindowHelpers.CreateInvisibleWindowAsync<MetroWindow>(w => w.ShowTitleBar = false);
58+
var icon = window.GetPart<ContentControl>("PART_Icon");
59+
60+
Assert.Equal(Visibility.Collapsed, icon.Visibility);
61+
}
62+
63+
[Fact]
64+
public async Task IconShouldBeVisibleWithShowTitleBarFalseAndOverlayBehaviorHiddenTitleBar()
65+
{
66+
await TestHost.SwitchToAppThread();
67+
68+
var window = await WindowHelpers.CreateInvisibleWindowAsync<MetroWindow>(w => {
69+
w.IconOverlayBehavior = WindowCommandsOverlayBehavior.HiddenTitleBar;
70+
w.ShowTitleBar = false;
71+
});
72+
var icon = window.GetPart<ContentControl>("PART_Icon");
73+
74+
Assert.Equal(Visibility.Visible, icon.Visibility);
75+
}
76+
77+
[Fact]
78+
public async Task IconShouldBeHiddenWithChangedShowIconOnTitleBar()
79+
{
80+
await TestHost.SwitchToAppThread();
81+
82+
var window = await WindowHelpers.CreateInvisibleWindowAsync<MetroWindow>();
83+
var icon = window.GetPart<ContentControl>("PART_Icon");
84+
85+
Assert.Equal(Visibility.Visible, icon.Visibility);
86+
87+
window.ShowIconOnTitleBar = false;
88+
89+
Assert.Equal(Visibility.Collapsed, icon.Visibility);
90+
}
91+
4192
[Fact]
4293
public async Task IconCanOverlayHiddenTitlebar()
4394
{

0 commit comments

Comments
 (0)