/// <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); }
/// <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); }
/// <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); }
/// <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); }
public static bool IsToolTipRegistered(this Control control, ICustomToolTip tooltip) { return(ToolTipCallbacks.Contains(GetToolTipCallbackData(control, tooltip))); }
private static ToolTipCallbackData GetToolTipCallbackData(Control control, ICustomToolTip tooltip) { return(ToolTipCallbacks.Find(match => match.ToolTipable == control && match.ToolTip == tooltip)); }
public ToolTipCallbackData(ICustomToolTip tooltip) { ToolTip = tooltip; }
public ToolTipCallbackData(Control toolTipable, ICustomToolTip tooltip) { ToolTipable = toolTipable; ToolTip = tooltip; }