Adjust Shadow Effect

This commit is contained in:
DB p 2025-03-02 07:51:20 +09:00
parent 70543d2378
commit 5b81cf5484
5 changed files with 76 additions and 67 deletions

View file

@ -189,7 +189,6 @@ namespace Flow.Launcher.Core.Resource
/// </summary>
public void SetBlurForWindow()
{
//SetWindowAccent();
var dict = GetThemeResourceDictionary(_settings.Theme);
if (dict == null)
@ -218,6 +217,7 @@ namespace Flow.Launcher.Core.Resource
// windowBorderStyle.Setters.Add(windowBorderStyle.Setters.OfType<Setter>().FirstOrDefault(x => x.Property.Name == "Background"));
//}
Methods.SetWindowAttribute(new WindowInteropHelper(mainWindow).Handle, DWMWINDOWATTRIBUTE.DWMWA_SYSTEMBACKDROP_TYPE, 1);
}
UpdateResourceDictionary(dict);
}
@ -655,47 +655,47 @@ namespace Flow.Launcher.Core.Resource
{
var dict = GetCurrentResourceDictionary();
var windowBorderStyle = dict["WindowBorderStyle"] as Style;
//var windowBorderStyle = dict["WindowBorderStyle"] as Style;
var effectSetter = new Setter
{
Property = Border.EffectProperty,
Value = new DropShadowEffect
{
Opacity = 0.3,
ShadowDepth = 12,
Direction = 270,
BlurRadius = 30
}
};
//var effectSetter = new Setter
//{
// Property = Border.EffectProperty,
// Value = new DropShadowEffect
// {
// Opacity = 0.3,
// ShadowDepth = 12,
// Direction = 270,
// BlurRadius = 30
// }
//};
var marginSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.MarginProperty) as Setter;
if (marginSetter == null)
{
var margin = new Thickness(ShadowExtraMargin, 12, ShadowExtraMargin, ShadowExtraMargin);
marginSetter = new Setter()
{
Property = Border.MarginProperty,
Value = margin,
};
windowBorderStyle.Setters.Add(marginSetter);
//var marginSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.MarginProperty) as Setter;
//if (marginSetter == null)
//{
// var margin = new Thickness(ShadowExtraMargin, 12, ShadowExtraMargin, ShadowExtraMargin);
// marginSetter = new Setter()
// {
// Property = Border.MarginProperty,
// Value = margin,
// };
// windowBorderStyle.Setters.Add(marginSetter);
SetResizeBoarderThickness(margin);
}
else
{
var baseMargin = (Thickness)marginSetter.Value;
var newMargin = new Thickness(
baseMargin.Left + ShadowExtraMargin,
baseMargin.Top + ShadowExtraMargin,
baseMargin.Right + ShadowExtraMargin,
baseMargin.Bottom + ShadowExtraMargin);
marginSetter.Value = newMargin;
// SetResizeBoarderThickness(margin);
//}
//else
//{
// var baseMargin = (Thickness)marginSetter.Value;
// var newMargin = new Thickness(
// baseMargin.Left + ShadowExtraMargin,
// baseMargin.Top + ShadowExtraMargin,
// baseMargin.Right + ShadowExtraMargin,
// baseMargin.Bottom + ShadowExtraMargin);
// marginSetter.Value = newMargin;
SetResizeBoarderThickness(newMargin);
}
// SetResizeBoarderThickness(newMargin);
//}
windowBorderStyle.Setters.Add(effectSetter);
//windowBorderStyle.Setters.Add(effectSetter);
UpdateResourceDictionary(dict);
}
@ -703,25 +703,26 @@ namespace Flow.Launcher.Core.Resource
public void RemoveDropShadowEffectFromCurrentTheme()
{
var dict = GetCurrentResourceDictionary();
var windowBorderStyle = dict["WindowBorderStyle"] as Style;
mainWindow.WindowStyle = WindowStyle.None;
//var windowBorderStyle = dict["WindowBorderStyle"] as Style;
var effectSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.EffectProperty) as Setter;
var marginSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.MarginProperty) as Setter;
//var effectSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.EffectProperty) as Setter;
//var marginSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.MarginProperty) as Setter;
if (effectSetter != null)
{
windowBorderStyle.Setters.Remove(effectSetter);
}
if (marginSetter != null)
{
var currentMargin = (Thickness)marginSetter.Value;
var newMargin = new Thickness(
currentMargin.Left - ShadowExtraMargin,
currentMargin.Top - ShadowExtraMargin,
currentMargin.Right - ShadowExtraMargin,
currentMargin.Bottom - ShadowExtraMargin);
marginSetter.Value = newMargin;
}
//if (effectSetter != null)
//{
// windowBorderStyle.Setters.Remove(effectSetter);
//}
//if (marginSetter != null)
//{
// var currentMargin = (Thickness)marginSetter.Value;
// var newMargin = new Thickness(
// currentMargin.Left - ShadowExtraMargin,
// currentMargin.Top - ShadowExtraMargin,
// currentMargin.Right - ShadowExtraMargin,
// currentMargin.Bottom - ShadowExtraMargin);
// marginSetter.Value = newMargin;
//}
SetResizeBoarderThickness(null);

View file

@ -104,6 +104,8 @@
<system:String x:Key="AlwaysPreview">Always Preview</system:String>
<system:String x:Key="AlwaysPreviewToolTip">Always open preview panel when Flow activates. Press {0} to toggle preview.</system:String>
<system:String x:Key="shadowEffectNotAllowed">Shadow effect is not allowed while current theme has blur effect enabled</system:String>
<system:String x:Key="shadowEffectRestart">The shadow effect transition takes effect after the program restarts</system:String>
<system:String x:Key="shadowEffectNotAllowedBlur">Translucent themes cannot turn off shadow effects</system:String>
<!-- Setting Plugin -->
<system:String x:Key="searchplugin">Search Plugin</system:String>

View file

@ -67,6 +67,11 @@ namespace Flow.Launcher
var win = HwndSource.FromHwnd(handle);
win.AddHook(WndProc);
};
if (_settings.UseDropShadowEffect == false) /* Shadow Effect */
{
FlowMainWindow.WindowStyle = WindowStyle.None;
FlowMainWindow.AllowsTransparency = true;
}
}
DispatcherTimer timer = new DispatcherTimer { Interval = new TimeSpan(0, 0, 0, 0, 500), IsEnabled = false };

View file

@ -35,8 +35,8 @@ public partial class SettingsPaneThemeViewModel : BaseModel
_selectedTheme = value;
ThemeManager.Instance.ChangeTheme(value.FileNameWithoutExtension);
if (ThemeManager.Instance.BlurEnabled && Settings.UseDropShadowEffect)
DropShadowEffect = false;
if (ThemeManager.Instance.BlurEnabled && Settings.UseDropShadowEffect == false)
DropShadowEffect = true;
ThemeManager.Instance.RefreshFrame();
}
}
@ -46,20 +46,21 @@ public partial class SettingsPaneThemeViewModel : BaseModel
get => Settings.UseDropShadowEffect;
set
{
if (ThemeManager.Instance.BlurEnabled && value)
if (ThemeManager.Instance.BlurEnabled && value == false)
{
App.API.ShowMsgBox(InternationalizationManager.Instance.GetTranslation("shadowEffectNotAllowed"));
App.API.ShowMsgBox(InternationalizationManager.Instance.GetTranslation("shadowEffectNotAllowedBlur"));
Settings.UseDropShadowEffect = true;
return;
}
if (value)
{
ThemeManager.Instance.AddDropShadowEffectToCurrentTheme();
}
else
{
ThemeManager.Instance.RemoveDropShadowEffectFromCurrentTheme();
}
//if (value)
//{
// ThemeManager.Instance.AddDropShadowEffectToCurrentTheme();
//}
//else
//{
// ThemeManager.Instance.RemoveDropShadowEffectFromCurrentTheme();
//}
Settings.UseDropShadowEffect = value;
}

View file

@ -375,7 +375,7 @@
Title="{DynamicResource queryWindowShadowEffect}"
Margin="0 8 0 0"
Icon="&#xeb91;"
Sub="{DynamicResource shadowEffectCPUUsage}">
Sub="{DynamicResource shadowEffectRestart}">
<ui:ToggleSwitch
IsOn="{Binding DropShadowEffect}"
OffContent="{DynamicResource disable}"