diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 1d6c03065..04adbd63d 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -244,6 +244,8 @@ namespace Flow.Launcher { _settings.WindowLeft = Left; _settings.WindowTop = Top; + ClockPanel.Opacity = 0; + SearchIcon.Opacity = 0; //This condition stops extra hide call when animator is on, // which causes the toggling to occasional hide instead of show. if (_viewModel.MainWindowVisibilityStatus) @@ -252,6 +254,7 @@ namespace Flow.Launcher // This also stops the mainwindow from flickering occasionally after Settings window is opened // and always after Settings window is closed. if (_settings.UseAnimation) + await Task.Delay(100); if (_settings.HideWhenDeactivated && !_viewModel.ExternalPreviewVisible) diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs index 6cd4f7f96..30ceea66c 100644 --- a/Flow.Launcher/ViewModel/MainViewModel.cs +++ b/Flow.Launcher/ViewModel/MainViewModel.cs @@ -1410,26 +1410,6 @@ namespace Flow.Launcher.ViewModel SelectedResults = Results; } - if (Application.Current.MainWindow is MainWindow mainWindow) - { - // ๐Ÿ“Œ ์•„์ด์ฝ˜๊ณผ ์‹œ๊ณ„ Opacity๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜๊ณ  Visibility.Hidden ์ ์šฉ - Application.Current.Dispatcher.Invoke(() => - { - mainWindow.ClockPanel.Opacity = 0; - mainWindow.SearchIcon.Opacity = 0; - mainWindow.ClockPanel.Visibility = Visibility.Hidden; - //mainWindow.SearchIcon.Visibility = Visibility.Hidden; - SearchIconVisibility = Visibility.Hidden; - - // ๊ฐ•์ œ UI ์—…๋ฐ์ดํŠธ - mainWindow.ClockPanel.UpdateLayout(); - mainWindow.SearchIcon.UpdateLayout(); - }, DispatcherPriority.Render); - - // ๐Ÿ“Œ DWM Cloak ์ ์šฉ (์ฐฝ์„ ์™„์ „ํžˆ ์ˆจ๊น€) - Win32Helper.DWMSetCloakForWindow(mainWindow, true); - } - // ๐Ÿ“Œ ํ…์ŠคํŠธ ์ดˆ๊ธฐํ™” ์ฆ‰์‹œ ์ ์šฉ + UI ๊ฐ•์ œ ์—…๋ฐ์ดํŠธ if (Settings.LastQueryMode == LastQueryMode.Empty) { @@ -1468,7 +1448,29 @@ namespace Flow.Launcher.ViewModel // ShowWindow(hWnd, SW_HIDE); //} + if (Application.Current.MainWindow is MainWindow mainWindow) + { + // ๐Ÿ“Œ ์•„์ด์ฝ˜๊ณผ ์‹œ๊ณ„ Opacity๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜๊ณ  Visibility.Hidden ์ ์šฉ + Application.Current.Dispatcher.Invoke(() => + { + mainWindow.ClockPanel.Opacity = 0; + mainWindow.SearchIcon.Opacity = 0; + mainWindow.ClockPanel.Visibility = Visibility.Hidden; + //mainWindow.SearchIcon.Visibility = Visibility.Hidden; + SearchIconVisibility = Visibility.Hidden; + + // ๊ฐ•์ œ UI ์—…๋ฐ์ดํŠธ + mainWindow.ClockPanel.UpdateLayout(); + mainWindow.SearchIcon.UpdateLayout(); + }, DispatcherPriority.Render); + + // ๐Ÿ“Œ DWM Cloak ์ ์šฉ (์ฐฝ์„ ์™„์ „ํžˆ ์ˆจ๊น€) + Win32Helper.DWMSetCloakForWindow(mainWindow, true); + } + + await Task.Delay(50); // WPF ์†์„ฑ ์—…๋ฐ์ดํŠธ + //MainWindowOpacity = 0; MainWindowVisibilityStatus = false; MainWindowVisibility = Visibility.Collapsed; VisibilityChanged?.Invoke(this, new VisibilityChangedEventArgs { IsVisible = false });