internal static void Hide(Control control)
 {
     if (currentControl == control)
     {
         currentControl = null;
         try
         {
             currentControlForm?.Close();
         }
         catch { }
         currentControlForm = null;
     }
 }
        public static void Update()
        {
            EngineToolTip.UpdateAllInstances();

            var control = GetControlOverCursor();

            if (currentControl != control)
            {
                //end old
                currentControl = null;
                currentControlForm?.Close();
                currentControlForm = null;

                //start new
                if (control != null)
                {
                    (EngineToolTip toolTip, string text)tuple = EngineToolTip.GetToolTipByControl(control);
                    if (tuple.toolTip != null && !string.IsNullOrEmpty(tuple.text))
                    {
                        currentControl          = control;
                        currentControlText      = tuple.text;
                        currentControlStartTime = EngineApp.GetSystemTime();
                        currentCursorPosition   = Control.MousePosition;
                    }
                }
            }

            //show form
            if (currentControl != null && currentControlForm == null)
            {
                //reset counter when mouse moved
                if (currentCursorPosition != Control.MousePosition)
                {
                    currentCursorPosition   = Control.MousePosition;
                    currentControlStartTime = EngineApp.GetSystemTime();
                }

                //show form
                if (EngineApp.GetSystemTime() > currentControlStartTime + initialDelay)
                {
                    currentControlForm = new EngineToolTipForm(currentControlText);
                    currentControlForm.StartPosition = FormStartPosition.Manual;
                    var mouse = Control.MousePosition;
                    currentControlForm.Location = new Point(mouse.X, mouse.Y + (int)(16.0f * EditorAPI.DPIScale));
                    currentControlForm.Show();
                }
            }
        }