Skip to content

Commit 0741231

Browse files
committed
Adjust Flickering code
1 parent f3a5365 commit 0741231

File tree

2 files changed

+25
-20
lines changed

2 files changed

+25
-20
lines changed

Flow.Launcher/MainWindow.xaml.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,8 @@ private async void OnDeactivated(object sender, EventArgs e)
244244
{
245245
_settings.WindowLeft = Left;
246246
_settings.WindowTop = Top;
247+
ClockPanel.Opacity = 0;
248+
SearchIcon.Opacity = 0;
247249
//This condition stops extra hide call when animator is on,
248250
// which causes the toggling to occasional hide instead of show.
249251
if (_viewModel.MainWindowVisibilityStatus)
@@ -252,6 +254,7 @@ private async void OnDeactivated(object sender, EventArgs e)
252254
// This also stops the mainwindow from flickering occasionally after Settings window is opened
253255
// and always after Settings window is closed.
254256
if (_settings.UseAnimation)
257+
255258
await Task.Delay(100);
256259

257260
if (_settings.HideWhenDeactivated && !_viewModel.ExternalPreviewVisible)

Flow.Launcher/ViewModel/MainViewModel.cs

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1410,26 +1410,6 @@ public async void Hide()
14101410
SelectedResults = Results;
14111411
}
14121412

1413-
if (Application.Current.MainWindow is MainWindow mainWindow)
1414-
{
1415-
// 📌 아이콘과 시계 Opacity를 0으로 설정하고 Visibility.Hidden 적용
1416-
Application.Current.Dispatcher.Invoke(() =>
1417-
{
1418-
mainWindow.ClockPanel.Opacity = 0;
1419-
mainWindow.SearchIcon.Opacity = 0;
1420-
mainWindow.ClockPanel.Visibility = Visibility.Hidden;
1421-
//mainWindow.SearchIcon.Visibility = Visibility.Hidden;
1422-
SearchIconVisibility = Visibility.Hidden;
1423-
1424-
// 강제 UI 업데이트
1425-
mainWindow.ClockPanel.UpdateLayout();
1426-
mainWindow.SearchIcon.UpdateLayout();
1427-
}, DispatcherPriority.Render);
1428-
1429-
// 📌 DWM Cloak 적용 (창을 완전히 숨김)
1430-
Win32Helper.DWMSetCloakForWindow(mainWindow, true);
1431-
}
1432-
14331413
// 📌 텍스트 초기화 즉시 적용 + UI 강제 업데이트
14341414
if (Settings.LastQueryMode == LastQueryMode.Empty)
14351415
{
@@ -1468,7 +1448,29 @@ public async void Hide()
14681448
// ShowWindow(hWnd, SW_HIDE);
14691449
//}
14701450

1451+
if (Application.Current.MainWindow is MainWindow mainWindow)
1452+
{
1453+
// 📌 아이콘과 시계 Opacity를 0으로 설정하고 Visibility.Hidden 적용
1454+
Application.Current.Dispatcher.Invoke(() =>
1455+
{
1456+
mainWindow.ClockPanel.Opacity = 0;
1457+
mainWindow.SearchIcon.Opacity = 0;
1458+
mainWindow.ClockPanel.Visibility = Visibility.Hidden;
1459+
//mainWindow.SearchIcon.Visibility = Visibility.Hidden;
1460+
SearchIconVisibility = Visibility.Hidden;
1461+
1462+
// 강제 UI 업데이트
1463+
mainWindow.ClockPanel.UpdateLayout();
1464+
mainWindow.SearchIcon.UpdateLayout();
1465+
}, DispatcherPriority.Render);
1466+
1467+
// 📌 DWM Cloak 적용 (창을 완전히 숨김)
1468+
Win32Helper.DWMSetCloakForWindow(mainWindow, true);
1469+
}
1470+
1471+
await Task.Delay(50);
14711472
// WPF 속성 업데이트
1473+
//MainWindowOpacity = 0;
14721474
MainWindowVisibilityStatus = false;
14731475
MainWindowVisibility = Visibility.Collapsed;
14741476
VisibilityChanged?.Invoke(this, new VisibilityChangedEventArgs { IsVisible = false });

0 commit comments

Comments
 (0)