mirror of
https://github.com/Hofknecht/SystemTrayMenu.git
synced 2024-10-05 04:24:38 +13:00
Fix wrong appearance in menu size and position when switching from loading menu to final sub menu
This commit is contained in:
parent
cfd53b516e
commit
4ac3d1eb3a
3 changed files with 31 additions and 3 deletions
|
@ -355,8 +355,14 @@ namespace SystemTrayMenu.Business
|
||||||
if (menuData.DirectoryState != MenuDataDirectoryState.Undefined)
|
if (menuData.DirectoryState != MenuDataDirectoryState.Undefined)
|
||||||
{
|
{
|
||||||
// Sub Menu (completed)
|
// Sub Menu (completed)
|
||||||
|
// As we need to render it during calculations but we don't want to show flickering windows,
|
||||||
|
// we just hide it for just a moment and show it again after updates have been applied.
|
||||||
|
// In order to hide it via Opacity we have to cancel any Fade animations.
|
||||||
|
menu.StopFade();
|
||||||
|
menu.Opacity = 0D;
|
||||||
menu.AddItemsToMenu(menuData.RowDatas, menuData.DirectoryState);
|
menu.AddItemsToMenu(menuData.RowDatas, menuData.DirectoryState);
|
||||||
AdjustMenusSizeAndLocation(menu.Level);
|
AdjustMenusSizeAndLocation(menu.Level);
|
||||||
|
menu.Opacity = 1D;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
<Window.Triggers>
|
<Window.Triggers>
|
||||||
<EventTrigger RoutedEvent="local:Menu.FadeToTransparent">
|
<EventTrigger RoutedEvent="local:Menu.FadeToTransparent">
|
||||||
<BeginStoryboard>
|
<BeginStoryboard Name="FadeToTransparentStoryboard">
|
||||||
<Storyboard>
|
<Storyboard>
|
||||||
<DoubleAnimation
|
<DoubleAnimation
|
||||||
Storyboard.TargetProperty="Opacity"
|
Storyboard.TargetProperty="Opacity"
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
</BeginStoryboard>
|
</BeginStoryboard>
|
||||||
</EventTrigger>
|
</EventTrigger>
|
||||||
<EventTrigger RoutedEvent="local:Menu.FadeIn">
|
<EventTrigger RoutedEvent="local:Menu.FadeIn">
|
||||||
<BeginStoryboard>
|
<BeginStoryboard Name="FadeInStoryboard">
|
||||||
<Storyboard>
|
<Storyboard>
|
||||||
<DoubleAnimation
|
<DoubleAnimation
|
||||||
Storyboard.TargetProperty="Opacity"
|
Storyboard.TargetProperty="Opacity"
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
</BeginStoryboard>
|
</BeginStoryboard>
|
||||||
</EventTrigger>
|
</EventTrigger>
|
||||||
<EventTrigger RoutedEvent="local:Menu.FadeOut">
|
<EventTrigger RoutedEvent="local:Menu.FadeOut">
|
||||||
<BeginStoryboard>
|
<BeginStoryboard Name="FadeOutStoryboard">
|
||||||
<Storyboard>
|
<Storyboard>
|
||||||
<DoubleAnimation
|
<DoubleAnimation
|
||||||
Storyboard.TargetProperty="Opacity"
|
Storyboard.TargetProperty="Opacity"
|
||||||
|
@ -45,6 +45,11 @@
|
||||||
</Storyboard>
|
</Storyboard>
|
||||||
</BeginStoryboard>
|
</BeginStoryboard>
|
||||||
</EventTrigger>
|
</EventTrigger>
|
||||||
|
<EventTrigger RoutedEvent="local:Menu.FadeStop">
|
||||||
|
<StopStoryboard BeginStoryboardName="FadeToTransparentStoryboard" />
|
||||||
|
<StopStoryboard BeginStoryboardName="FadeInStoryboard" />
|
||||||
|
<StopStoryboard BeginStoryboardName="FadeOutStoryboard"/>
|
||||||
|
</EventTrigger>
|
||||||
</Window.Triggers>
|
</Window.Triggers>
|
||||||
|
|
||||||
<Window.Resources>
|
<Window.Resources>
|
||||||
|
|
|
@ -37,6 +37,9 @@ namespace SystemTrayMenu.UserInterface
|
||||||
private static readonly RoutedEvent FadeOutEvent = EventManager.RegisterRoutedEvent(
|
private static readonly RoutedEvent FadeOutEvent = EventManager.RegisterRoutedEvent(
|
||||||
nameof(FadeOut), RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(Menu));
|
nameof(FadeOut), RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(Menu));
|
||||||
|
|
||||||
|
private static readonly RoutedEvent FadeStopEvent = EventManager.RegisterRoutedEvent(
|
||||||
|
nameof(FadeStop), RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(Menu));
|
||||||
|
|
||||||
private readonly string folderPath;
|
private readonly string folderPath;
|
||||||
|
|
||||||
private bool isShellContextMenuOpen;
|
private bool isShellContextMenuOpen;
|
||||||
|
@ -243,6 +246,12 @@ namespace SystemTrayMenu.UserInterface
|
||||||
remove { RemoveHandler(FadeOutEvent, value); }
|
remove { RemoveHandler(FadeOutEvent, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal event RoutedEventHandler FadeStop
|
||||||
|
{
|
||||||
|
add { AddHandler(FadeStopEvent, value); }
|
||||||
|
remove { RemoveHandler(FadeStopEvent, value); }
|
||||||
|
}
|
||||||
|
|
||||||
internal enum StartLocation
|
internal enum StartLocation
|
||||||
{
|
{
|
||||||
Point,
|
Point,
|
||||||
|
@ -503,6 +512,14 @@ namespace SystemTrayMenu.UserInterface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal void StopFade()
|
||||||
|
{
|
||||||
|
if (Settings.Default.UseFading)
|
||||||
|
{
|
||||||
|
RaiseEvent(new(routedEvent: FadeStopEvent));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Update the position and size of the menu.
|
/// Update the position and size of the menu.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Reference in a new issue