mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Support smooth scroll
This commit is contained in:
parent
a9eb17ee50
commit
4436a1efee
2 changed files with 68 additions and 30 deletions
|
|
@ -166,22 +166,32 @@
|
|||
<cc:HyperLink x:Name="SeeMore" Text="{DynamicResource seeMoreReleaseNotes}" />
|
||||
</Grid>
|
||||
|
||||
<mdxam:MarkdownScrollViewer
|
||||
x:Name="MarkdownViewer"
|
||||
<!-- Do not use scroll function of MarkdownViewer because it does not support smooth scroll -->
|
||||
<ScrollViewer
|
||||
x:Name="MarkdownScrollViewer"
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="5"
|
||||
Width="500"
|
||||
Height="500"
|
||||
Margin="15 0 20 0"
|
||||
ClickAction="SafetyDisplayWithRelativePath"
|
||||
Loaded="MarkdownViewer_Loaded"
|
||||
Plugins="{StaticResource MdXamlPlugins}"
|
||||
Visibility="Collapsed" />
|
||||
Height="500">
|
||||
<mdxam:MarkdownScrollViewer
|
||||
x:Name="MarkdownViewer"
|
||||
Margin="15 0 20 0"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
ClickAction="SafetyDisplayWithRelativePath"
|
||||
HorizontalScrollBarVisibility="Disabled"
|
||||
Loaded="MarkdownViewer_Loaded"
|
||||
MouseWheel="MarkdownViewer_MouseWheel"
|
||||
Plugins="{StaticResource MdXamlPlugins}"
|
||||
PreviewMouseWheel="MarkdownViewer_PreviewMouseWheel"
|
||||
VerticalScrollBarVisibility="Disabled"
|
||||
Visibility="Collapsed" />
|
||||
</ScrollViewer>
|
||||
|
||||
<!-- This Grid is for display progress ring and refresh button. -->
|
||||
<!-- And it is also for changing the size of the MarkdownViewer. -->
|
||||
<!-- Because VerticalAlignment="Stretch" can cause size issue with MarkdownViewer. -->
|
||||
<!-- Because VerticalAlignment="Stretch" can cause size issue with MarkdownScrollViewer. -->
|
||||
<Grid
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
|
|
|
|||
|
|
@ -24,6 +24,25 @@ namespace Flow.Launcher
|
|||
ModernWpf.ThemeManager.Current.ActualApplicationThemeChanged += ThemeManager_ActualApplicationThemeChanged;
|
||||
}
|
||||
|
||||
private void ThemeManager_ActualApplicationThemeChanged(ModernWpf.ThemeManager sender, object args)
|
||||
{
|
||||
Application.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
if (ModernWpf.ThemeManager.Current.ActualApplicationTheme == ModernWpf.ApplicationTheme.Light)
|
||||
{
|
||||
MarkdownViewer.MarkdownStyle = (Style)Application.Current.Resources["DocumentStyleGithubLikeLight"];
|
||||
MarkdownViewer.Foreground = Brushes.Black;
|
||||
MarkdownViewer.Background = Brushes.White;
|
||||
}
|
||||
else
|
||||
{
|
||||
MarkdownViewer.MarkdownStyle = (Style)Application.Current.Resources["DocumentStyleGithubLikeDark"];
|
||||
MarkdownViewer.Foreground = Brushes.White;
|
||||
MarkdownViewer.Background = Brushes.Black;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
#region Window Events
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
|
|
@ -162,6 +181,8 @@ namespace Flow.Launcher
|
|||
|
||||
#endregion
|
||||
|
||||
#region Control Events
|
||||
|
||||
private void MarkdownViewer_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
RefreshMarkdownViewer();
|
||||
|
|
@ -196,29 +217,36 @@ namespace Flow.Launcher
|
|||
});
|
||||
}
|
||||
|
||||
private void ThemeManager_ActualApplicationThemeChanged(ModernWpf.ThemeManager sender, object args)
|
||||
{
|
||||
Application.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
if (ModernWpf.ThemeManager.Current.ActualApplicationTheme == ModernWpf.ApplicationTheme.Light)
|
||||
{
|
||||
MarkdownViewer.MarkdownStyle = (Style)Application.Current.Resources["DocumentStyleGithubLikeLight"];
|
||||
MarkdownViewer.Foreground = Brushes.Black;
|
||||
MarkdownViewer.Background = Brushes.White;
|
||||
}
|
||||
else
|
||||
{
|
||||
MarkdownViewer.MarkdownStyle = (Style)Application.Current.Resources["DocumentStyleGithubLikeDark"];
|
||||
MarkdownViewer.Foreground = Brushes.White;
|
||||
MarkdownViewer.Background = Brushes.Black;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
|
||||
{
|
||||
MarkdownViewer.Height = e.NewSize.Height;
|
||||
MarkdownViewer.Width = e.NewSize.Width;
|
||||
MarkdownScrollViewer.Height = e.NewSize.Height;
|
||||
MarkdownScrollViewer.Width = e.NewSize.Width;
|
||||
}
|
||||
|
||||
private void MarkdownViewer_MouseWheel(object sender, MouseWheelEventArgs e)
|
||||
{
|
||||
RaiseMouseWheelEvent(sender, e);
|
||||
}
|
||||
|
||||
private void MarkdownViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
|
||||
{
|
||||
RaiseMouseWheelEvent(sender, e);
|
||||
}
|
||||
|
||||
private void RaiseMouseWheelEvent(object sender, MouseWheelEventArgs e)
|
||||
{
|
||||
e.Handled = true; // Prevent the inner control from handling the event
|
||||
|
||||
var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta)
|
||||
{
|
||||
RoutedEvent = UIElement.MouseWheelEvent,
|
||||
Source = sender
|
||||
};
|
||||
|
||||
// Raise the event on the parent ScrollViewer
|
||||
MarkdownScrollViewer.RaiseEvent(eventArg);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue