[EXPLORER] trayclock: Better handle timers, especially when it is hidden

This commit is contained in:
Serge Gautherie 2020-01-24 14:47:58 +01:00 committed by Giannis Adamopoulos
parent e45b15aca2
commit e68bee7518

View file

@ -452,8 +452,7 @@ BOOL CTrayClockWnd::ResetTime()
KillTimer(ID_TRAYCLOCK_TIMER);
IsTimerEnabled = FALSE;
}
if (IsInitTimerEnabled)
else if (IsInitTimerEnabled)
{
KillTimer(ID_TRAYCLOCK_TIMER_INIT);
}
@ -464,9 +463,6 @@ BOOL CTrayClockWnd::ResetTime()
Ret = SetTimer(ID_TRAYCLOCK_TIMER_INIT, uiDueTime, NULL) != 0;
IsInitTimerEnabled = Ret;
/* Update the time */
Update();
return Ret;
}
@ -500,9 +496,6 @@ VOID CTrayClockWnd::CalibrateTimer()
uiWait2. */
Ret = SetTimer(ID_TRAYCLOCK_TIMER, uiWait2, NULL) != 0;
IsTimerEnabled = Ret;
/* Update the time */
Update();
}
else
{
@ -510,6 +503,9 @@ VOID CTrayClockWnd::CalibrateTimer()
minute/second ends. */
ResetTime();
}
/* Update the time */
Update();
}
LRESULT CTrayClockWnd::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
@ -519,8 +515,7 @@ LRESULT CTrayClockWnd::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL&
{
KillTimer(ID_TRAYCLOCK_TIMER);
}
if (IsInitTimerEnabled)
else if (IsInitTimerEnabled)
{
KillTimer(ID_TRAYCLOCK_TIMER_INIT);
}
@ -668,7 +663,14 @@ LRESULT CTrayClockWnd::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& b
m_tooltip.AddTool(&ti);
ResetTime();
if (!g_TaskbarSettings.sr.HideClock)
{
ResetTime();
}
/* Update the time */
Update();
return TRUE;
}
@ -702,6 +704,25 @@ LRESULT CTrayClockWnd::OnTaskbarSettingsChanged(UINT uMsg, WPARAM wParam, LPARAM
g_TaskbarSettings.sr.HideClock = newSettings->sr.HideClock;
ShowWindow(g_TaskbarSettings.sr.HideClock ? SW_HIDE : SW_SHOW);
bRealign = TRUE;
if (g_TaskbarSettings.sr.HideClock)
{
/* Disable all timers */
if (IsTimerEnabled)
{
KillTimer(ID_TRAYCLOCK_TIMER);
IsTimerEnabled = FALSE;
}
else if (IsInitTimerEnabled)
{
KillTimer(ID_TRAYCLOCK_TIMER_INIT);
IsInitTimerEnabled = FALSE;
}
}
else
{
ResetTime();
}
}
if (bRealign)