Skip to content

Commit 8b8b6ae

Browse files
authored
Merge pull request #1098 from Flow-Launcher/ScrollToSelectedPlugin
Scroll to selected item when expanded or size changed
2 parents 6abd37d + 56a7c7f commit 8b8b6ae

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

Flow.Launcher/SettingWindow.xaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -927,7 +927,9 @@
927927
ScrollViewer.CanContentScroll="False"
928928
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
929929
SelectedItem="{Binding SelectedPlugin}"
930-
SnapsToDevicePixels="True">
930+
SelectionChanged="SelectedPluginChanged"
931+
SnapsToDevicePixels="True"
932+
Name="Plugins">
931933
<ListBox.ItemsPanel>
932934
<ItemsPanelTemplate>
933935
<StackPanel Margin="0,0,0,18" />
@@ -1116,7 +1118,8 @@
11161118
Margin="0"
11171119
Padding="1"
11181120
VerticalAlignment="Stretch"
1119-
Content="{Binding SettingControl}" />
1121+
Content="{Binding SettingControl}"
1122+
SizeChanged="ItemSizeChanged"/>
11201123
</StackPanel>
11211124

11221125
<StackPanel>

Flow.Launcher/SettingWindow.xaml.cs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,15 @@
1313
using System;
1414
using System.IO;
1515
using System.Windows;
16+
using System.Windows.Controls;
1617
using System.Windows.Forms;
1718
using System.Windows.Input;
1819
using System.Windows.Interop;
20+
using System.Windows.Media;
1921
using System.Windows.Navigation;
2022
using Button = System.Windows.Controls.Button;
2123
using Control = System.Windows.Controls.Control;
24+
using ListViewItem = System.Windows.Controls.ListViewItem;
2225
using MessageBox = System.Windows.MessageBox;
2326
using TextBox = System.Windows.Controls.TextBox;
2427
using ThemeManager = ModernWpf.ThemeManager;
@@ -44,6 +47,7 @@ public SettingWindow(IPublicAPI api, SettingWindowViewModel viewModel)
4447
}
4548

4649
#region General
50+
4751
private void OnLoaded(object sender, RoutedEventArgs e)
4852
{
4953
RefreshMaximizeRestoreButton();
@@ -247,6 +251,7 @@ private void OnPluginDirecotyClick(object sender, MouseButtonEventArgs e)
247251
PluginManager.API.OpenDirectory(directory);
248252
}
249253
}
254+
250255
#endregion
251256

252257
#region Proxy
@@ -307,7 +312,7 @@ private void OnPluginStoreRefreshClick(object sender, RoutedEventArgs e)
307312

308313
private void OnExternalPluginInstallClick(object sender, RoutedEventArgs e)
309314
{
310-
if(sender is Button { DataContext: UserPlugin plugin })
315+
if (sender is Button { DataContext: UserPlugin plugin })
311316
{
312317
var pluginsManagerPlugin = PluginManager.GetPluginForId("9f8f9b14-2518-4907-b211-35ab6290dee7");
313318
var actionKeyword = pluginsManagerPlugin.Metadata.ActionKeywords.Count == 0 ? "" : pluginsManagerPlugin.Metadata.ActionKeywords[0];
@@ -326,7 +331,7 @@ private void OnExternalPluginInstallClick(object sender, RoutedEventArgs e)
326331
textBox.MoveFocus(tRequest);
327332
}
328333

329-
private void ColorSchemeSelectedIndexChanged(object sender, EventArgs e)
334+
private void ColorSchemeSelectedIndexChanged(object sender, EventArgs e)
330335
=> ThemeManager.Current.ApplicationTheme = settings.ColorScheme switch
331336
{
332337
Constant.Light => ApplicationTheme.Light,
@@ -370,5 +375,13 @@ private void Window_StateChanged(object sender, EventArgs e)
370375
RefreshMaximizeRestoreButton();
371376
}
372377

378+
private void SelectedPluginChanged(object sender, SelectionChangedEventArgs e)
379+
{
380+
Plugins.ScrollIntoView(Plugins.SelectedItem);
381+
}
382+
private void ItemSizeChanged(object sender, SizeChangedEventArgs e)
383+
{
384+
Plugins.ScrollIntoView(Plugins.SelectedItem);
385+
}
373386
}
374-
}
387+
}

0 commit comments

Comments
 (0)