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