Skip to content

Commit fa0d42e

Browse files
authored
Merge branch 'dev' into 240430PreviewSetting
2 parents a337163 + b9b3422 commit fa0d42e

23 files changed

+780
-761
lines changed

.github/actions/spelling/allow.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,6 @@ https
33
ssh
44
ubuntu
55
runcount
6+
Firefox
7+
Português
8+
Português (Brasil)

.github/actions/spelling/expect.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ WCA_ACCENT_POLICY
7474
HGlobal
7575
dopusrt
7676
firefox
77+
Firefox
7778
msedge
7879
svgc
7980
ime

Flow.Launcher.Infrastructure/UserSettings/Settings.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ public class Settings : BaseModel, IHotkeySettings
2727
public string SelectNextItemHotkey2 { get; set; } = $"";
2828
public string SelectPrevItemHotkey { get; set; } = $"Shift + Tab";
2929
public string SelectPrevItemHotkey2 { get; set; } = $"";
30-
public string SelectNextPageHotkey { get; set; } = $"";
31-
public string SelectPrevPageHotkey { get; set; } = $"";
30+
public string SelectNextPageHotkey { get; set; } = $"PageUp";
31+
public string SelectPrevPageHotkey { get; set; } = $"PageDown";
3232
public string OpenContextMenuHotkey { get; set; } = $"Ctrl+O";
3333
public string SettingWindowHotkey { get; set; } = $"Ctrl+I";
3434

Flow.Launcher/Languages/en.xaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,16 +185,17 @@
185185
<system:String x:Key="autoCompleteHotkey">Auto Complete</system:String>
186186
<system:String x:Key="autoCompleteHotkeyToolTip">Runs autocomplete for the selected items.</system:String>
187187
<system:String x:Key="SelectNextItemHotkey">Select Next Item</system:String>
188-
<system:String x:Key="SelectPrevItemHotkey">Select Prev Item</system:String>
188+
<system:String x:Key="SelectPrevItemHotkey">Select Previous Item</system:String>
189189
<system:String x:Key="SelectNextPageHotkey">Next Page</system:String>
190-
<system:String x:Key="SelectPrevPageHotkey">Prev Page</system:String>
190+
<system:String x:Key="SelectPrevPageHotkey">Previous Page</system:String>
191191
<system:String x:Key="OpenContextMenuHotkey">Open Context Menu</system:String>
192192
<system:String x:Key="SettingWindowHotkey">Open Setting Window</system:String>
193193
<system:String x:Key="CopyFilePathHotkey">Copy File Path</system:String>
194194
<system:String x:Key="ToggleGameModeHotkey">Toggle Game Mode</system:String>
195195
<system:String x:Key="ToggleHistoryHotkey">Toggle History</system:String>
196196
<system:String x:Key="OpenContainFolderHotkey">Open Containing Folder</system:String>
197197
<system:String x:Key="RunAsAdminHotkey">Run As Admin</system:String>
198+
<system:String x:Key="RequeryHotkey">Refresh Search Results</system:String>
198199
<system:String x:Key="ReloadPluginHotkey">Reload Plugins Data</system:String>
199200
<system:String x:Key="QuickWidthHotkey">Quick Adjust Window Width</system:String>
200201
<system:String x:Key="QuickHeightHotkey">Quick Adjust Window Height</system:String>

Flow.Launcher/MainWindow.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
LocationChanged="OnLocationChanged"
2727
Opacity="{Binding MainWindowOpacity, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
2828
PreviewKeyDown="OnKeyDown"
29+
PreviewKeyUp="OnKeyUp"
2930
ResizeMode="NoResize"
3031
ShowInTaskbar="False"
3132
SizeToContent="Height"

Flow.Launcher/MainWindow.xaml.cs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public partial class MainWindow
4747
private MainViewModel _viewModel;
4848
private bool _animating;
4949
MediaPlayer animationSound = new MediaPlayer();
50+
private bool isArrowKeyPressed = false;
5051

5152
#endregion
5253

@@ -109,9 +110,11 @@ private async void OnClosing(object sender, CancelEventArgs e)
109110
private void OnInitialized(object sender, EventArgs e)
110111
{
111112
}
112-
113113
private void OnLoaded(object sender, RoutedEventArgs _)
114114
{
115+
// MouseEventHandler
116+
PreviewMouseMove += MainPreviewMouseMove;
117+
115118
CheckFirstLaunch();
116119
HideStartup();
117120
// show notify icon when flowlauncher is hidden
@@ -406,6 +409,7 @@ public void WindowAnimator()
406409
if (_animating)
407410
return;
408411

412+
isArrowKeyPressed = true;
409413
_animating = true;
410414
UpdatePosition();
411415

@@ -494,6 +498,7 @@ public void WindowAnimator()
494498
windowsb.Completed += (_, _) => _animating = false;
495499
_settings.WindowLeft = Left;
496500
_settings.WindowTop = Top;
501+
isArrowKeyPressed = false;
497502

498503
if (QueryTextBox.Text.Length == 0)
499504
{
@@ -644,10 +649,12 @@ private void OnKeyDown(object sender, KeyEventArgs e)
644649
switch (e.Key)
645650
{
646651
case Key.Down:
652+
isArrowKeyPressed = true;
647653
_viewModel.SelectNextItemCommand.Execute(null);
648654
e.Handled = true;
649655
break;
650656
case Key.Up:
657+
isArrowKeyPressed = true;
651658
_viewModel.SelectPrevItemCommand.Execute(null);
652659
e.Handled = true;
653660
break;
@@ -698,7 +705,21 @@ private void OnKeyDown(object sender, KeyEventArgs e)
698705

699706
}
700707
}
708+
private void OnKeyUp(object sender, KeyEventArgs e)
709+
{
710+
if (e.Key == Key.Up || e.Key == Key.Down)
711+
{
712+
isArrowKeyPressed = false;
713+
}
714+
}
701715

716+
private void MainPreviewMouseMove(object sender, System.Windows.Input.MouseEventArgs e)
717+
{
718+
if (isArrowKeyPressed)
719+
{
720+
e.Handled = true; // Ignore Mouse Hover when press Arrowkeys
721+
}
722+
}
702723
public void PreviewReset()
703724
{
704725
_viewModel.ResetPreview();

Flow.Launcher/SettingWindow.xaml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2802,7 +2802,13 @@
28022802
Title="{DynamicResource ToggleGameModeHotkey}"
28032803
Icon="&#xe7fc;"
28042804
Type="Inside">
2805-
<cc:HotkeyDisplay Keys="Ctrl+Shift+C" />
2805+
<cc:HotkeyDisplay Keys="Ctrl+F12" />
2806+
</cc:Card>
2807+
<cc:Card
2808+
Title="{DynamicResource RequeryHotkey}"
2809+
Icon="&#xe72c;"
2810+
Type="Inside">
2811+
<cc:HotkeyDisplay Keys="Ctrl+R" />
28062812
</cc:Card>
28072813
<cc:Card
28082814
Title="{DynamicResource ReloadPluginHotkey}"

Plugins/Flow.Launcher.Plugin.BrowserBookmark/ChromeBookmarkLoader.cs

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,22 @@
33
using System.Collections.Generic;
44
using System.IO;
55

6-
namespace Flow.Launcher.Plugin.BrowserBookmark
6+
namespace Flow.Launcher.Plugin.BrowserBookmark;
7+
8+
public class ChromeBookmarkLoader : ChromiumBookmarkLoader
79
{
8-
public class ChromeBookmarkLoader : ChromiumBookmarkLoader
10+
public override List<Bookmark> GetBookmarks()
911
{
10-
public override List<Bookmark> GetBookmarks()
11-
{
12-
return LoadChromeBookmarks();
13-
}
12+
return LoadChromeBookmarks();
13+
}
1414

15-
private List<Bookmark> LoadChromeBookmarks()
16-
{
17-
var bookmarks = new List<Bookmark>();
18-
var platformPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
19-
bookmarks.AddRange(LoadBookmarks(Path.Combine(platformPath, @"Google\Chrome\User Data"), "Google Chrome"));
20-
bookmarks.AddRange(LoadBookmarks(Path.Combine(platformPath, @"Google\Chrome SxS\User Data"), "Google Chrome Canary"));
21-
bookmarks.AddRange(LoadBookmarks(Path.Combine(platformPath, @"Chromium\User Data"), "Chromium"));
22-
return bookmarks;
23-
}
15+
private List<Bookmark> LoadChromeBookmarks()
16+
{
17+
var bookmarks = new List<Bookmark>();
18+
var platformPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
19+
bookmarks.AddRange(LoadBookmarks(Path.Combine(platformPath, @"Google\Chrome\User Data"), "Google Chrome"));
20+
bookmarks.AddRange(LoadBookmarks(Path.Combine(platformPath, @"Google\Chrome SxS\User Data"), "Google Chrome Canary"));
21+
bookmarks.AddRange(LoadBookmarks(Path.Combine(platformPath, @"Chromium\User Data"), "Chromium"));
22+
return bookmarks;
2423
}
25-
}
24+
}

Plugins/Flow.Launcher.Plugin.BrowserBookmark/ChromiumBookmarkLoader.cs

Lines changed: 64 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -4,92 +4,91 @@
44
using System.Text.Json;
55
using Flow.Launcher.Infrastructure.Logger;
66

7-
namespace Flow.Launcher.Plugin.BrowserBookmark
7+
namespace Flow.Launcher.Plugin.BrowserBookmark;
8+
9+
public abstract class ChromiumBookmarkLoader : IBookmarkLoader
810
{
9-
public abstract class ChromiumBookmarkLoader : IBookmarkLoader
11+
public abstract List<Bookmark> GetBookmarks();
12+
13+
protected List<Bookmark> LoadBookmarks(string browserDataPath, string name)
1014
{
11-
public abstract List<Bookmark> GetBookmarks();
15+
var bookmarks = new List<Bookmark>();
16+
if (!Directory.Exists(browserDataPath)) return bookmarks;
17+
var paths = Directory.GetDirectories(browserDataPath);
1218

13-
protected List<Bookmark> LoadBookmarks(string browserDataPath, string name)
19+
foreach (var profile in paths)
1420
{
15-
var bookmarks = new List<Bookmark>();
16-
if (!Directory.Exists(browserDataPath)) return bookmarks;
17-
var paths = Directory.GetDirectories(browserDataPath);
18-
19-
foreach (var profile in paths)
20-
{
21-
var bookmarkPath = Path.Combine(profile, "Bookmarks");
22-
if (!File.Exists(bookmarkPath))
23-
continue;
24-
25-
Main.RegisterBookmarkFile(bookmarkPath);
21+
var bookmarkPath = Path.Combine(profile, "Bookmarks");
22+
if (!File.Exists(bookmarkPath))
23+
continue;
2624

27-
var source = name + (Path.GetFileName(profile) == "Default" ? "" : $" ({Path.GetFileName(profile)})");
28-
bookmarks.AddRange(LoadBookmarksFromFile(bookmarkPath, source));
29-
}
25+
Main.RegisterBookmarkFile(bookmarkPath);
3026

31-
return bookmarks;
27+
var source = name + (Path.GetFileName(profile) == "Default" ? "" : $" ({Path.GetFileName(profile)})");
28+
bookmarks.AddRange(LoadBookmarksFromFile(bookmarkPath, source));
3229
}
3330

34-
protected List<Bookmark> LoadBookmarksFromFile(string path, string source)
35-
{
36-
var bookmarks = new List<Bookmark>();
31+
return bookmarks;
32+
}
3733

38-
if (!File.Exists(path))
39-
return bookmarks;
34+
protected List<Bookmark> LoadBookmarksFromFile(string path, string source)
35+
{
36+
var bookmarks = new List<Bookmark>();
4037

41-
using var jsonDocument = JsonDocument.Parse(File.ReadAllText(path));
42-
if (!jsonDocument.RootElement.TryGetProperty("roots", out var rootElement))
43-
return bookmarks;
44-
EnumerateRoot(rootElement, bookmarks, source);
38+
if (!File.Exists(path))
4539
return bookmarks;
46-
}
4740

48-
private void EnumerateRoot(JsonElement rootElement, ICollection<Bookmark> bookmarks, string source)
41+
using var jsonDocument = JsonDocument.Parse(File.ReadAllText(path));
42+
if (!jsonDocument.RootElement.TryGetProperty("roots", out var rootElement))
43+
return bookmarks;
44+
EnumerateRoot(rootElement, bookmarks, source);
45+
return bookmarks;
46+
}
47+
48+
private void EnumerateRoot(JsonElement rootElement, ICollection<Bookmark> bookmarks, string source)
49+
{
50+
foreach (var folder in rootElement.EnumerateObject())
4951
{
50-
foreach (var folder in rootElement.EnumerateObject())
51-
{
52-
if (folder.Value.ValueKind != JsonValueKind.Object)
53-
continue;
52+
if (folder.Value.ValueKind != JsonValueKind.Object)
53+
continue;
5454

55-
// Fix for Opera. It stores bookmarks slightly different than chrome. See PR and bug report for this change for details.
56-
// If various exceptions start to build up here consider splitting this Loader into multiple separate ones.
57-
if (folder.Name == "custom_root")
58-
EnumerateRoot(folder.Value, bookmarks, source);
59-
else
60-
EnumerateFolderBookmark(folder.Value, bookmarks, source);
61-
}
55+
// Fix for Opera. It stores bookmarks slightly different than chrome. See PR and bug report for this change for details.
56+
// If various exceptions start to build up here consider splitting this Loader into multiple separate ones.
57+
if (folder.Name == "custom_root")
58+
EnumerateRoot(folder.Value, bookmarks, source);
59+
else
60+
EnumerateFolderBookmark(folder.Value, bookmarks, source);
6261
}
62+
}
6363

64-
private void EnumerateFolderBookmark(JsonElement folderElement, ICollection<Bookmark> bookmarks,
65-
string source)
64+
private void EnumerateFolderBookmark(JsonElement folderElement, ICollection<Bookmark> bookmarks,
65+
string source)
66+
{
67+
if (!folderElement.TryGetProperty("children", out var childrenElement))
68+
return;
69+
foreach (var subElement in childrenElement.EnumerateArray())
6670
{
67-
if (!folderElement.TryGetProperty("children", out var childrenElement))
68-
return;
69-
foreach (var subElement in childrenElement.EnumerateArray())
71+
if (subElement.TryGetProperty("type", out var type))
7072
{
71-
if (subElement.TryGetProperty("type", out var type))
72-
{
73-
switch (type.GetString())
74-
{
75-
case "folder":
76-
case "workspace": // Edge Workspace
77-
EnumerateFolderBookmark(subElement, bookmarks, source);
78-
break;
79-
default:
80-
bookmarks.Add(new Bookmark(
81-
subElement.GetProperty("name").GetString(),
82-
subElement.GetProperty("url").GetString(),
83-
source));
84-
break;
85-
}
86-
}
87-
else
73+
switch (type.GetString())
8874
{
89-
Log.Error(
90-
$"ChromiumBookmarkLoader: EnumerateFolderBookmark: type property not found for {subElement.GetString()}");
75+
case "folder":
76+
case "workspace": // Edge Workspace
77+
EnumerateFolderBookmark(subElement, bookmarks, source);
78+
break;
79+
default:
80+
bookmarks.Add(new Bookmark(
81+
subElement.GetProperty("name").GetString(),
82+
subElement.GetProperty("url").GetString(),
83+
source));
84+
break;
9185
}
9286
}
87+
else
88+
{
89+
Log.Error(
90+
$"ChromiumBookmarkLoader: EnumerateFolderBookmark: type property not found for {subElement.GetString()}");
91+
}
9392
}
9493
}
9594
}

0 commit comments

Comments
 (0)