mirror of
https://github.com/Hofknecht/SystemTrayMenu.git
synced 2024-06-20 19:30:31 +12:00
[Feature] Stay open when 'Enter' pressed and reactivated within 200ms (#223, #226, #227), version 1.0.24.4
This commit is contained in:
parent
ceb128b702
commit
a140f13c23
|
@ -37,6 +37,7 @@ namespace SystemTrayMenu.Business
|
|||
private bool showingMessageBox;
|
||||
private TaskbarPosition taskbarPosition = new WindowsTaskbar().Position;
|
||||
private bool searchTextChanging;
|
||||
private bool waitingForReactivate;
|
||||
|
||||
public Menus()
|
||||
{
|
||||
|
@ -245,15 +246,16 @@ namespace SystemTrayMenu.Business
|
|||
}
|
||||
|
||||
timerShowProcessStartedAsLoadingIcon.Interval = Properties.Settings.Default.TimeUntilClosesAfterEnterPressed;
|
||||
timerStillActiveCheck.Interval = 1000;
|
||||
timerStillActiveCheck.Interval = Properties.Settings.Default.TimeUntilClosesAfterEnterPressed + 20;
|
||||
timerStillActiveCheck.Tick += (sender, e) => StillActiveTick();
|
||||
void StillActiveTick()
|
||||
{
|
||||
if (!IsActive())
|
||||
{
|
||||
FadeHalfOrOutIfNeeded();
|
||||
timerStillActiveCheck.Stop();
|
||||
}
|
||||
|
||||
timerStillActiveCheck.Stop();
|
||||
}
|
||||
|
||||
waitLeave.LeaveTriggered += FadeHalfOrOutIfNeeded;
|
||||
|
@ -481,7 +483,9 @@ namespace SystemTrayMenu.Business
|
|||
|
||||
internal bool IsOpenCloseStateOpening()
|
||||
{
|
||||
return openCloseState == OpenCloseState.Opening;
|
||||
Log.Info(openCloseState.ToString());
|
||||
return openCloseState == OpenCloseState.Opening ||
|
||||
(openCloseState == OpenCloseState.Default && menus[0] != null && menus[0].Visible);
|
||||
}
|
||||
|
||||
internal void SwitchOpenClose(bool byClick)
|
||||
|
@ -669,7 +673,7 @@ namespace SystemTrayMenu.Business
|
|||
void Deactivate(object sender, EventArgs e)
|
||||
{
|
||||
if (!Properties.Settings.Default.StaysOpenWhenFocusLostAfterEnterPressed ||
|
||||
!timerStillActiveCheck.Enabled)
|
||||
!waitingForReactivate)
|
||||
{
|
||||
FadeHalfOrOutIfNeeded();
|
||||
if (!IsActive())
|
||||
|
@ -877,20 +881,16 @@ namespace SystemTrayMenu.Business
|
|||
|
||||
if (rowData.ProcessStarted)
|
||||
{
|
||||
waitingForReactivate = true;
|
||||
rowData.ProcessStarted = false;
|
||||
row.Cells[0].Value = Resources.StaticResources.LoadingIcon;
|
||||
timerShowProcessStartedAsLoadingIcon.Tick += Tick;
|
||||
void Tick(object sender, EventArgs e)
|
||||
{
|
||||
row.Cells[0].Value = rowData.ReadLoadedIcon();
|
||||
timerShowProcessStartedAsLoadingIcon.Tick -= Tick;
|
||||
timerShowProcessStartedAsLoadingIcon.Stop();
|
||||
|
||||
if (Properties.Settings.Default.StaysOpenWhenFocusLostAfterEnterPressed)
|
||||
{
|
||||
timerStillActiveCheck.Stop();
|
||||
FadeHalfOrOutIfNeeded();
|
||||
}
|
||||
row.Cells[0].Value = rowData.ReadLoadedIcon();
|
||||
waitingForReactivate = false;
|
||||
}
|
||||
|
||||
timerShowProcessStartedAsLoadingIcon.Stop();
|
||||
|
|
|
@ -39,5 +39,5 @@ using System.Runtime.InteropServices;
|
|||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.24.3")]
|
||||
[assembly: AssemblyFileVersion("1.0.24.3")]
|
||||
[assembly: AssemblyVersion("1.0.24.4")]
|
||||
[assembly: AssemblyFileVersion("1.0.24.4")]
|
||||
|
|
2
Properties/Settings.Designer.cs
generated
2
Properties/Settings.Designer.cs
generated
|
@ -254,7 +254,7 @@ namespace SystemTrayMenu.Properties
|
|||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CustomSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("1000")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("500")]
|
||||
public int TimeUntilCloses
|
||||
{
|
||||
get
|
||||
|
|
|
@ -137,6 +137,15 @@ namespace SystemTrayMenu.UserInterface
|
|||
customScrollbar.MouseEnter += ControlsMouseEnter;
|
||||
dgv.MouseEnter += ControlsMouseEnter;
|
||||
labelTitle.MouseEnter += ControlsMouseEnter;
|
||||
textBoxSearch.MouseEnter += ControlsMouseEnter;
|
||||
pictureBoxMenuAlwaysOpen.MouseEnter += ControlsMouseEnter;
|
||||
pictureBoxOpenFolder.MouseEnter += ControlsMouseEnter;
|
||||
pictureBoxSearch.MouseEnter += ControlsMouseEnter;
|
||||
pictureBoxFilesCount.MouseEnter += ControlsMouseEnter;
|
||||
pictureBoxFoldersCount.MouseEnter += ControlsMouseEnter;
|
||||
labelFilesCount.MouseEnter += ControlsMouseEnter;
|
||||
labelFoldersCount.MouseEnter += ControlsMouseEnter;
|
||||
|
||||
void ControlsMouseEnter(object sender, EventArgs e)
|
||||
{
|
||||
MouseEnter?.Invoke();
|
||||
|
@ -145,6 +154,14 @@ namespace SystemTrayMenu.UserInterface
|
|||
customScrollbar.MouseLeave += ControlsMouseLeave;
|
||||
dgv.MouseLeave += ControlsMouseLeave;
|
||||
labelTitle.MouseLeave += ControlsMouseLeave;
|
||||
textBoxSearch.MouseLeave += ControlsMouseLeave;
|
||||
pictureBoxMenuAlwaysOpen.MouseLeave += ControlsMouseLeave;
|
||||
pictureBoxOpenFolder.MouseLeave += ControlsMouseLeave;
|
||||
pictureBoxSearch.MouseLeave += ControlsMouseLeave;
|
||||
pictureBoxFilesCount.MouseLeave += ControlsMouseLeave;
|
||||
pictureBoxFoldersCount.MouseLeave += ControlsMouseLeave;
|
||||
labelFilesCount.MouseLeave += ControlsMouseLeave;
|
||||
labelFoldersCount.MouseLeave += ControlsMouseLeave;
|
||||
void ControlsMouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
MouseLeave?.Invoke();
|
||||
|
|
|
@ -801,7 +801,7 @@ namespace SystemTrayMenu.UserInterface
|
|||
{
|
||||
checkBoxStayOpenWhenItemClicked.Checked = true;
|
||||
checkBoxStayOpenWhenFocusLost.Checked = true;
|
||||
numericUpDownTimeUntilClose.Value = 1000;
|
||||
numericUpDownTimeUntilClose.Value = 500;
|
||||
numericUpDownTimeUntilOpens.Value = 100;
|
||||
checkBoxStayOpenWhenFocusLostAfterEnterPressed.Checked = true;
|
||||
numericUpDownTimeUntilClosesAfterEnterPressed.Value = 200;
|
||||
|
|
Loading…
Reference in a new issue