Change AddShadow Logic

This commit is contained in:
DB p 2025-03-04 13:46:36 +09:00
parent ff18abcddd
commit f0b1422f63
2 changed files with 136 additions and 66 deletions

View file

@ -153,10 +153,69 @@ namespace Flow.Launcher.Core.Resource
//Methods.SetWindowAttribute(new WindowInteropHelper(mainWindow).Handle, DWMWINDOWATTRIBUTE.DWMWA_BORDER_COLOR, 0x00FF0000); //Methods.SetWindowAttribute(new WindowInteropHelper(mainWindow).Handle, DWMWINDOWATTRIBUTE.DWMWA_BORDER_COLOR, 0x00FF0000);
//Methods.SetWindowAttribute(new WindowInteropHelper(mainWindow).Handle, DWMWINDOWATTRIBUTE.DWMWA_SYSTEMBACKDROP_TYPE, 3); //Methods.SetWindowAttribute(new WindowInteropHelper(mainWindow).Handle, DWMWINDOWATTRIBUTE.DWMWA_SYSTEMBACKDROP_TYPE, 3);
if (!_settings.UseDropShadowEffect && BlurEnabled)
{
_settings.UseDropShadowEffect = true;
AddDropShadowEffectToCurrentTheme();
}
if (_settings.UseDropShadowEffect)
{
AddDropShadowEffectToCurrentTheme();
}
//else if (!_settings.usedropshadoweffect && blurenabled)
//{
// adddropshadoweffecttocurrenttheme();
// _settings.usedropshadoweffect = true;
//}
SetBlurForWindow(); SetBlurForWindow();
//SetCornerForWindow(); //SetCornerForWindow();
} }
public void AutoDropShadow()
{
if (_settings.UseDropShadowEffect)
{
RemoveDropShadowEffectFromCurrentTheme();
if (BlurEnabled)
{
Debug.WriteLine("이거는 블러있는 테마이므로 외곽선 주고 그림자");
SetWindowCornerPreference("Round");
}
else
{
Debug.WriteLine("이거는 블러없는 테마");
AddDropShadowEffectToCurrentTheme();
}
}
else
{
RemoveDropShadowEffectFromCurrentTheme();
if (BlurEnabled)
{
SetWindowCornerPreference("Default");
}
else
{
RemoveDropShadowEffectFromCurrentTheme();
}
}
}
public void SetWindowCornerPreference(string cornerType)
{
DWM_WINDOW_CORNER_PREFERENCE preference = cornerType switch
{
"DoNotRound" => DWM_WINDOW_CORNER_PREFERENCE.DoNotRound,
"Round" => DWM_WINDOW_CORNER_PREFERENCE.Round,
"RoundSmall" => DWM_WINDOW_CORNER_PREFERENCE.RoundSmall,
"Default" => DWM_WINDOW_CORNER_PREFERENCE.Default,
_ => DWM_WINDOW_CORNER_PREFERENCE.Default,
};
SetWindowCornerPreference(mainWindow, preference);
}
public void SetCornerForWindow() public void SetCornerForWindow()
{ {
@ -465,10 +524,11 @@ namespace Flow.Launcher.Core.Resource
} }
BlurEnabled = Win32Helper.IsBlurTheme(); BlurEnabled = Win32Helper.IsBlurTheme();
if (_settings.UseDropShadowEffect)
if (_settings.UseDropShadowEffect && !BlurEnabled)
AddDropShadowEffectToCurrentTheme(); AddDropShadowEffectToCurrentTheme();
//Win32Helper.SetBlurForWindow(Application.Current.MainWindow, BlurEnabled); //Win32Helper.SetBlurForWindow(Application.Current.MainWindow, BlurEnabled);
SetBlurForWindow(); SetBlurForWindow();
} }
@ -656,76 +716,86 @@ namespace Flow.Launcher.Core.Resource
public void AddDropShadowEffectToCurrentTheme() public void AddDropShadowEffectToCurrentTheme()
{ {
var dict = GetCurrentResourceDictionary(); SetWindowCornerPreference("Default");
if (BlurEnabled)
{
SetWindowCornerPreference("Round");
}
else
{
var dict = GetCurrentResourceDictionary();
//var windowBorderStyle = dict["WindowBorderStyle"] as Style; var windowBorderStyle = dict["WindowBorderStyle"] as Style;
//var effectSetter = new Setter var effectSetter = new Setter
//{ {
// Property = Border.EffectProperty, Property = Border.EffectProperty,
// Value = new DropShadowEffect Value = new DropShadowEffect
// { {
// Opacity = 0.3, Opacity = 0.3,
// ShadowDepth = 12, ShadowDepth = 12,
// Direction = 270, Direction = 270,
// BlurRadius = 30 BlurRadius = 30
// } }
//}; };
//var marginSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.MarginProperty) as Setter; var marginSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.MarginProperty) as Setter;
//if (marginSetter == null) if (marginSetter == null)
//{ {
// var margin = new Thickness(ShadowExtraMargin, 12, ShadowExtraMargin, ShadowExtraMargin); var margin = new Thickness(ShadowExtraMargin, 12, ShadowExtraMargin, ShadowExtraMargin);
// marginSetter = new Setter() marginSetter = new Setter()
// { {
// Property = Border.MarginProperty, Property = Border.MarginProperty,
// Value = margin, Value = margin,
// }; };
// windowBorderStyle.Setters.Add(marginSetter); windowBorderStyle.Setters.Add(marginSetter);
// SetResizeBoarderThickness(margin); SetResizeBoarderThickness(margin);
//} }
//else else
//{ {
// var baseMargin = (Thickness)marginSetter.Value; var baseMargin = (Thickness)marginSetter.Value;
// var newMargin = new Thickness( var newMargin = new Thickness(
// baseMargin.Left + ShadowExtraMargin, baseMargin.Left + ShadowExtraMargin,
// baseMargin.Top + ShadowExtraMargin, baseMargin.Top + ShadowExtraMargin,
// baseMargin.Right + ShadowExtraMargin, baseMargin.Right + ShadowExtraMargin,
// baseMargin.Bottom + ShadowExtraMargin); baseMargin.Bottom + ShadowExtraMargin);
// marginSetter.Value = newMargin; marginSetter.Value = newMargin;
// SetResizeBoarderThickness(newMargin); SetResizeBoarderThickness(newMargin);
//} }
//windowBorderStyle.Setters.Add(effectSetter); windowBorderStyle.Setters.Add(effectSetter);
UpdateResourceDictionary(dict); UpdateResourceDictionary(dict);
}
} }
public void RemoveDropShadowEffectFromCurrentTheme() public void RemoveDropShadowEffectFromCurrentTheme()
{ {
SetWindowCornerPreference("Default");
var dict = GetCurrentResourceDictionary(); var dict = GetCurrentResourceDictionary();
mainWindow.WindowStyle = WindowStyle.None; //mainWindow.WindowStyle = WindowStyle.None;
//var windowBorderStyle = dict["WindowBorderStyle"] as Style; var windowBorderStyle = dict["WindowBorderStyle"] as Style;
//var effectSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.EffectProperty) 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; var marginSetter = windowBorderStyle.Setters.FirstOrDefault(setterBase => setterBase is Setter setter && setter.Property == Border.MarginProperty) as Setter;
//if (effectSetter != null) if (effectSetter != null)
//{ {
// windowBorderStyle.Setters.Remove(effectSetter); windowBorderStyle.Setters.Remove(effectSetter);
//} }
//if (marginSetter != null) if (marginSetter != null)
//{ {
// var currentMargin = (Thickness)marginSetter.Value; var currentMargin = (Thickness)marginSetter.Value;
// var newMargin = new Thickness( var newMargin = new Thickness(
// currentMargin.Left - ShadowExtraMargin, currentMargin.Left - ShadowExtraMargin,
// currentMargin.Top - ShadowExtraMargin, currentMargin.Top - ShadowExtraMargin,
// currentMargin.Right - ShadowExtraMargin, currentMargin.Right - ShadowExtraMargin,
// currentMargin.Bottom - ShadowExtraMargin); currentMargin.Bottom - ShadowExtraMargin);
// marginSetter.Value = newMargin; marginSetter.Value = newMargin;
//} }
SetResizeBoarderThickness(null); SetResizeBoarderThickness(null);

View file

@ -53,14 +53,14 @@ public partial class SettingsPaneThemeViewModel : BaseModel
return; return;
} }
//if (value) if (value)
//{ {
// ThemeManager.Instance.AddDropShadowEffectToCurrentTheme(); ThemeManager.Instance.AddDropShadowEffectToCurrentTheme();
//} }
//else else
//{ {
// ThemeManager.Instance.RemoveDropShadowEffectFromCurrentTheme(); ThemeManager.Instance.RemoveDropShadowEffectFromCurrentTheme();
//} }
Settings.UseDropShadowEffect = value; Settings.UseDropShadowEffect = value;
} }