fix:无焦点功能丢失
This commit is contained in:
@@ -62,6 +62,7 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
// 设置面板相关状态
|
// 设置面板相关状态
|
||||||
private bool userChangedNoFocusModeInSettings;
|
private bool userChangedNoFocusModeInSettings;
|
||||||
|
private bool isTemporarilyDisablingNoFocusMode = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1839,7 +1840,11 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
var hwnd = new WindowInteropHelper(this).Handle;
|
var hwnd = new WindowInteropHelper(this).Handle;
|
||||||
int exStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
|
int exStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
|
||||||
if (Settings.Advanced.IsNoFocusMode)
|
|
||||||
|
bool shouldBeNoFocus = isTemporarilyDisablingNoFocusMode ?
|
||||||
|
false : Settings.Advanced.IsNoFocusMode;
|
||||||
|
|
||||||
|
if (shouldBeNoFocus)
|
||||||
{
|
{
|
||||||
SetWindowLong(hwnd, GWL_EXSTYLE, exStyle | WS_EX_NOACTIVATE);
|
SetWindowLong(hwnd, GWL_EXSTYLE, exStyle | WS_EX_NOACTIVATE);
|
||||||
}
|
}
|
||||||
@@ -2021,6 +2026,12 @@ namespace Ink_Canvas
|
|||||||
var toggle = sender as ToggleSwitch;
|
var toggle = sender as ToggleSwitch;
|
||||||
Settings.Advanced.IsNoFocusMode = toggle != null && toggle.IsOn;
|
Settings.Advanced.IsNoFocusMode = toggle != null && toggle.IsOn;
|
||||||
SaveSettingsToFile();
|
SaveSettingsToFile();
|
||||||
|
|
||||||
|
if (isTemporarilyDisablingNoFocusMode)
|
||||||
|
{
|
||||||
|
isTemporarilyDisablingNoFocusMode = false;
|
||||||
|
}
|
||||||
|
|
||||||
ApplyNoFocusMode();
|
ApplyNoFocusMode();
|
||||||
|
|
||||||
// 如果启用了窗口置顶,需要重新应用置顶设置以处理无焦点模式的变化
|
// 如果启用了窗口置顶,需要重新应用置顶设置以处理无焦点模式的变化
|
||||||
|
|||||||
@@ -396,15 +396,11 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
BorderSettings.Visibility = Visibility.Collapsed;
|
BorderSettings.Visibility = Visibility.Collapsed;
|
||||||
isOpeningOrHidingSettingsPane = false;
|
isOpeningOrHidingSettingsPane = false;
|
||||||
// 在设置面板完全关闭后,根据情况恢复无焦点模式状态
|
if (isTemporarilyDisablingNoFocusMode)
|
||||||
if (!userChangedNoFocusModeInSettings && wasNoFocusModeBeforeSettings)
|
|
||||||
{
|
{
|
||||||
// 如果用户没有在设置中修改无焦点模式,则恢复之前的状态
|
isTemporarilyDisablingNoFocusMode = false;
|
||||||
Settings.Advanced.IsNoFocusMode = true;
|
|
||||||
ToggleSwitchNoFocusMode.IsOn = true; // 同步更新设置面板中的开关状态
|
|
||||||
ApplyNoFocusMode();
|
ApplyNoFocusMode();
|
||||||
}
|
}
|
||||||
// 如果用户在设置中修改了无焦点模式,则保持用户的修改
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BorderSettings.RenderTransform = new TranslateTransform();
|
BorderSettings.RenderTransform = new TranslateTransform();
|
||||||
@@ -2707,11 +2703,9 @@ namespace Ink_Canvas
|
|||||||
// 如果当前在设置面板中,需要先恢复无焦点模式状态
|
// 如果当前在设置面板中,需要先恢复无焦点模式状态
|
||||||
if (BorderSettings.Visibility == Visibility.Visible)
|
if (BorderSettings.Visibility == Visibility.Visible)
|
||||||
{
|
{
|
||||||
// 如果用户没有在设置中修改无焦点模式,则恢复之前的状态
|
if (isTemporarilyDisablingNoFocusMode)
|
||||||
if (!userChangedNoFocusModeInSettings && wasNoFocusModeBeforeSettings)
|
|
||||||
{
|
{
|
||||||
Settings.Advanced.IsNoFocusMode = true;
|
isTemporarilyDisablingNoFocusMode = false;
|
||||||
ToggleSwitchNoFocusMode.IsOn = true;
|
|
||||||
ApplyNoFocusMode();
|
ApplyNoFocusMode();
|
||||||
}
|
}
|
||||||
SaveSettingsToFile();
|
SaveSettingsToFile();
|
||||||
@@ -2726,11 +2720,9 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
if (BorderSettings.Visibility == Visibility.Visible)
|
if (BorderSettings.Visibility == Visibility.Visible)
|
||||||
{
|
{
|
||||||
// 如果用户没有在设置中修改无焦点模式,则恢复之前的状态
|
if (isTemporarilyDisablingNoFocusMode)
|
||||||
if (!userChangedNoFocusModeInSettings && wasNoFocusModeBeforeSettings)
|
|
||||||
{
|
{
|
||||||
Settings.Advanced.IsNoFocusMode = true;
|
isTemporarilyDisablingNoFocusMode = false;
|
||||||
ToggleSwitchNoFocusMode.IsOn = true;
|
|
||||||
ApplyNoFocusMode();
|
ApplyNoFocusMode();
|
||||||
}
|
}
|
||||||
SaveSettingsToFile();
|
SaveSettingsToFile();
|
||||||
@@ -2777,12 +2769,11 @@ namespace Ink_Canvas
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
BorderSettings.Visibility = Visibility.Visible;
|
BorderSettings.Visibility = Visibility.Visible;
|
||||||
// 临时禁用无焦点模式以避免下拉选项被遮挡
|
|
||||||
wasNoFocusModeBeforeSettings = Settings.Advanced.IsNoFocusMode;
|
wasNoFocusModeBeforeSettings = Settings.Advanced.IsNoFocusMode;
|
||||||
userChangedNoFocusModeInSettings = false; // 重置用户修改标志
|
userChangedNoFocusModeInSettings = false; // 重置用户修改标志
|
||||||
if (wasNoFocusModeBeforeSettings)
|
if (wasNoFocusModeBeforeSettings)
|
||||||
{
|
{
|
||||||
Settings.Advanced.IsNoFocusMode = false;
|
isTemporarilyDisablingNoFocusMode = true;
|
||||||
ApplyNoFocusMode();
|
ApplyNoFocusMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user