mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Adjust Shadow Effect
This commit is contained in:
parent
70543d2378
commit
5b81cf5484
5 changed files with 76 additions and 67 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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 };
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -375,7 +375,7 @@
|
|||
Title="{DynamicResource queryWindowShadowEffect}"
|
||||
Margin="0 8 0 0"
|
||||
Icon=""
|
||||
Sub="{DynamicResource shadowEffectCPUUsage}">
|
||||
Sub="{DynamicResource shadowEffectRestart}">
|
||||
<ui:ToggleSwitch
|
||||
IsOn="{Binding DropShadowEffect}"
|
||||
OffContent="{DynamicResource disable}"
|
||||
|
|
|
|||
Loading…
Reference in a new issue