コード例 #1
0
ファイル: ToolTipHelper.cs プロジェクト: Shupsta/Thrive
    /// <summary>
    ///   Disconnects signal connections and removes stored callback data for the given tooltip.
    /// </summary>
    public static void UnRegisterToolTipForControl(this Control control, ICustomToolTip tooltip)
    {
        if (!control.IsToolTipRegistered(tooltip))
        {
            return;
        }

        var data = GetToolTipCallbackData(control, tooltip);

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

        ToolTipCallbacks.Remove(data);
    }
コード例 #2
0
ファイル: ToolTipHelper.cs プロジェクト: xuxudefeng/Thrive
    /// <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);
    }
コード例 #3
0
ファイル: ToolTipHelper.cs プロジェクト: Shupsta/Thrive
    /// <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);
    }
コード例 #4
0
ファイル: ToolTipHelper.cs プロジェクト: Shupsta/Thrive
    /// <summary>
    ///   Get the control the given tooltip is registered to. Doesn't take into account controls with multiple
    ///   registered tooltips.
    /// </summary>
    public static Control GetControlAssociatedWithToolTip(ICustomToolTip tooltip)
    {
        var callbackData = ToolTipCallbacks.Find(match => match.ToolTip == tooltip);

        return(callbackData.ToolTipable);
    }
コード例 #5
0
ファイル: ToolTipHelper.cs プロジェクト: Shupsta/Thrive
 public static bool IsToolTipRegistered(this Control control, ICustomToolTip tooltip)
 {
     return(ToolTipCallbacks.Contains(GetToolTipCallbackData(control, tooltip)));
 }
コード例 #6
0
ファイル: ToolTipHelper.cs プロジェクト: Shupsta/Thrive
 private static ToolTipCallbackData GetToolTipCallbackData(Control control, ICustomToolTip tooltip)
 {
     return(ToolTipCallbacks.Find(match => match.ToolTipable == control && match.ToolTip == tooltip));
 }
コード例 #7
0
 public ToolTipCallbackData(ICustomToolTip tooltip)
 {
     ToolTip = tooltip;
 }
コード例 #8
0
 public ToolTipCallbackData(Control toolTipable, ICustomToolTip tooltip)
 {
     ToolTipable = toolTipable;
     ToolTip     = tooltip;
 }