[Shortcut Guide] Support delayed display of shortcuts except for taskbar shortcuts (#21762)

* Implement the delayed rendering

* Impelement settings UI

* Rename

* Set the minimum of ShortcutGuide_PressTimeForTaskbarIconShortcuts to 100ms

* Separate the animations of the global windows shortcuts and the taskbar icon shortcuts

* Amend

* Handle the case when the shortcut guide is not activated by win key long press

* Remove .vscode

* Keep the user's original setting of the win key press time

* Revert the default press time to 900 ms

* Restore default as 900
This commit is contained in:
Okami Wong
2022-11-18 22:22:40 +08:00
committed by GitHub
parent 6767ff736b
commit 89330986f4
11 changed files with 424 additions and 275 deletions

View File

@@ -12,7 +12,8 @@ namespace Microsoft.PowerToys.Settings.UI.Library
{
OverlayOpacity = new IntProperty(90);
UseLegacyPressWinKeyBehavior = new BoolProperty(false);
PressTime = new IntProperty(900);
PressTimeForGlobalWindowsShortcuts = new IntProperty(900);
PressTimeForTaskbarIconShortcuts = new IntProperty(900);
Theme = new StringProperty("system");
DisabledApps = new StringProperty();
OpenShortcutGuide = new HotkeySettings(true, false, false, true, 0xBF);
@@ -28,7 +29,10 @@ namespace Microsoft.PowerToys.Settings.UI.Library
public BoolProperty UseLegacyPressWinKeyBehavior { get; set; }
[JsonPropertyName("press_time")]
public IntProperty PressTime { get; set; }
public IntProperty PressTimeForGlobalWindowsShortcuts { get; set; }
[JsonPropertyName("press_time_for_taskbar_icon_shortcuts")]
public IntProperty PressTimeForTaskbarIconShortcuts { get; set; }
[JsonPropertyName("theme")]
public StringProperty Theme { get; set; }

View File

@@ -814,13 +814,10 @@
<data name="ShortcutGuide.ModuleDescription" xml:space="preserve">
<value>Shows a help overlay with Windows shortcuts.</value>
</data>
<data name="ShortcutGuide_PressTime.Header" xml:space="preserve">
<value>Press duration before showing (ms)</value>
<data name="ShortcutGuide_PressTimeForGlobalWindowsShortcuts.Header" xml:space="preserve">
<value>Press duration before showing global Windows shortcuts (ms)</value>
<comment>ms = milliseconds</comment>
</data>
<data name="ShortcutGuide_PressTime.Description" xml:space="preserve">
<value>How long to press the Windows key to activate the module</value>
</data>
<data name="ShortcutGuide_ActivationMethod.Header" xml:space="preserve">
<value>Activation method</value>
</data>
@@ -2685,6 +2682,10 @@ Activate by holding the key for the character you want to add an accent to, then
<data name="Hosts_Toggle_LaunchAdministrator.Header" xml:space="preserve">
<value>Launch as administrator</value>
</data>
<data name="ShortcutGuide_PressTimeForTaskbarIconShortcuts.Header" xml:space="preserve">
<value>Press duration before showing taskbar icon shortcuts (ms)</value>
<comment>ms = milliseconds</comment>
</data>
<data name="FileLocksmith.ModuleDescription" xml:space="preserve">
<value>A Windows shell extension to find out which processes are using the selected files and directories.</value>
</data>

View File

@@ -66,7 +66,8 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
}
_useLegacyPressWinKeyBehavior = Settings.Properties.UseLegacyPressWinKeyBehavior.Value;
_pressTime = Settings.Properties.PressTime.Value;
_pressTimeForGlobalWindowsShortcuts = Settings.Properties.PressTimeForGlobalWindowsShortcuts.Value;
_pressTimeForTaskbarIconShortcuts = Settings.Properties.PressTimeForTaskbarIconShortcuts.Value;
_opacity = Settings.Properties.OverlayOpacity.Value;
_disabledApps = Settings.Properties.DisabledApps.Value;
@@ -83,7 +84,8 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
private bool _isEnabled;
private int _themeIndex;
private bool _useLegacyPressWinKeyBehavior;
private int _pressTime;
private int _pressTimeForGlobalWindowsShortcuts;
private int _pressTimeForTaskbarIconShortcuts;
private int _opacity;
public bool IsEnabled
@@ -201,15 +203,33 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
{
get
{
return _pressTime;
return _pressTimeForGlobalWindowsShortcuts;
}
set
{
if (_pressTime != value)
if (_pressTimeForGlobalWindowsShortcuts != value)
{
_pressTime = value;
Settings.Properties.PressTime.Value = value;
_pressTimeForGlobalWindowsShortcuts = value;
Settings.Properties.PressTimeForGlobalWindowsShortcuts.Value = value;
NotifyPropertyChanged();
}
}
}
public int DelayTime
{
get
{
return _pressTimeForTaskbarIconShortcuts;
}
set
{
if (_pressTimeForTaskbarIconShortcuts != value)
{
_pressTimeForTaskbarIconShortcuts = value;
Settings.Properties.PressTimeForTaskbarIconShortcuts.Value = value;
NotifyPropertyChanged();
}
}

View File

@@ -53,7 +53,7 @@
</controls:Setting.ActionContent>
</controls:Setting>
<controls:Setting x:Uid="ShortcutGuide_PressTime" Icon="&#xE916;" Visibility="{x:Bind Mode=OneWay, Path=ViewModel.UseLegacyPressWinKeyBehavior, Converter={StaticResource TrueToVisibleConverter}}">
<controls:Setting x:Uid="ShortcutGuide_PressTimeForGlobalWindowsShortcuts" Icon="&#xE916;" Visibility="{x:Bind Mode=OneWay, Path=ViewModel.UseLegacyPressWinKeyBehavior, Converter={StaticResource TrueToVisibleConverter}}">
<controls:Setting.ActionContent>
<NumberBox
Minimum="100"
@@ -67,6 +67,20 @@
</controls:Setting.ActionContent>
</controls:Setting>
<controls:Setting x:Uid="ShortcutGuide_PressTimeForTaskbarIconShortcuts" Icon="&#xE916;" Visibility="{x:Bind Mode=OneWay, Path=ViewModel.UseLegacyPressWinKeyBehavior, Converter={StaticResource TrueToVisibleConverter}}">
<controls:Setting.ActionContent>
<NumberBox
Minimum="100"
Value="{x:Bind Mode=TwoWay, Path=ViewModel.DelayTime}"
MinWidth="{StaticResource SettingActionControlMinWidth}"
SpinButtonPlacementMode="Compact"
HorizontalAlignment="Left"
SmallChange="50"
LargeChange="100"
/>
</controls:Setting.ActionContent>
</controls:Setting>
<InfoBar
x:Uid="ShortcutGuide_PressWinKeyWarning"
Severity="Warning"