void _excelToolTipWatcher_ToolTipChanged(object sender, ExcelToolTipWatcher.ToolTipChangeEventArgs e)
{
// We assume the ExcelToolTip changes happen before the corresponding FunctionList / FormulaEdit changes
// So we keep track of the last shown one.
// This allows the FormulaEdit or transitions to pick it up, hopefully not getting confused with the FunctionList tooltip
// TODO: Check that the tooltip gets cleared from the CurrentState is it is hidden
Logger.Monitor.Verbose($"!> ExcelToolTip ToolTipChanged Received: {e} with state: {CurrentState.GetType().Name}");
if (e.ChangeType == ExcelToolTipWatcher.ToolTipChangeType.Show)
{
_lastExcelToolTipShown = e.Handle;
}
else if (e.ChangeType == ExcelToolTipWatcher.ToolTipChangeType.Hide)
{
if (_lastExcelToolTipShown == e.Handle)
{
_lastExcelToolTipShown = _excelToolTipWatcher.GetLastToolTipOrZero();
}
var fe = CurrentState as UIState.FormulaEdit;
if (fe != null)
{
// Either a FormulaEdit or a FunctionList
if (fe.ExcelToolTipWindow == e.Handle)
{
// OK - it's no longer valid
// TODO: Manage the state update
// This is a kind of pop.... is it right?
var newState = fe.WithToolTipWindow(_lastExcelToolTipShown);
OnStateChanged(newState);
}
}
}
}