Esempio n. 1
0
    /// <summary>
    ///   Registers a Control mouse enter/exit event to display a custom tooltip
    /// </summary>
    /// <param name="control">The Control to register the tooltip to</param>
    /// <param name="tooltip">The tooltip to register with</param>
    /// <param name="callbackDatas">List to store the callbacks to keep them from unloading</param>
    public static void RegisterToolTipForControl(this Control control, ICustomToolTip tooltip,
                                                 List <ToolTipCallbackData> callbackDatas)
    {
        // Skip if already registered
        if (callbackDatas.Find(match => match.ToolTip == tooltip) != null)
        {
            return;
        }

        var toolTipCallbackData = new ToolTipCallbackData(tooltip);

        control.Connect("mouse_entered", toolTipCallbackData, nameof(ToolTipCallbackData.OnMouseEnter));
        control.Connect("mouse_exited", toolTipCallbackData, nameof(ToolTipCallbackData.OnMouseExit));
        control.Connect("hide", toolTipCallbackData, nameof(ToolTipCallbackData.OnMouseExit));
        control.Connect("tree_exiting", toolTipCallbackData, nameof(ToolTipCallbackData.OnMouseExit));

        callbackDatas.Add(toolTipCallbackData);
    }
Esempio n. 2
0
    /// <summary>
    ///   Registers a Control mouse enter and exit event if hasn't already yet to the callbacks for the given
    ///   custom tooltip.
    /// </summary>
    /// <param name="control">The Control to register the tooltip to.</param>
    /// <param name="tooltip">The tooltip to register with.</param>
    public static void RegisterToolTipForControl(this Control control, ICustomToolTip tooltip)
    {
        if (tooltip == null)
        {
            GD.PrintErr($"Can't register Control: '{control.Name}' with a nonexistent tooltip");
            return;
        }

        // Skip if already registered
        if (control.IsToolTipRegistered(tooltip))
        {
            return;
        }

        var toolTipCallbackData = new ToolTipCallbackData(control, tooltip);

        control.Connect("mouse_entered", toolTipCallbackData, nameof(ToolTipCallbackData.OnMouseEnter));
        control.Connect("mouse_exited", toolTipCallbackData, nameof(ToolTipCallbackData.OnMouseExit));
        control.Connect("hide", toolTipCallbackData, nameof(ToolTipCallbackData.OnMouseExit));
        control.Connect("tree_exiting", toolTipCallbackData, nameof(ToolTipCallbackData.OnExitingTree));

        ToolTipCallbacks.Add(toolTipCallbackData);
    }