/// <summary> /// Gets the mouse handler presence for the view. /// </summary> /// <param name="view">The view.</param> /// <param name="handlerMask">Affected handlers.</param> /// <returns> /// true if a any handler from the handlerMask is enabled on the view, false otherwise. /// </returns> public static bool GetMouseHandlerPresent(this object view, MouseHandlerMask handlerMask) { if (view == null) { throw new ArgumentNullException(nameof(view)); } if (s_properties.TryGetValue(view, out var elementData)) { return((elementData.MouseHandlers & handlerMask) != 0); } return(false); }
/// <summary> /// Sets mouse handler presence for the view. Tracks multiple handlers, whereas the getter returns an "OR" value. /// </summary> /// <param name="view">The view.</param> /// <param name="handlerMask">Affected handlers.</param> /// <param name="handlerPresent">true if handler present, false otherwise.</param> internal static void SetMouseHandlerPresent(this object view, MouseHandlerMask handlerMask, bool handlerPresent) { if (view == null) { throw new ArgumentNullException(nameof(view)); } var data = s_properties.GetOrAdd(view, (v) => new ViewData()); if (handlerPresent) { data.MouseHandlers |= handlerMask; } else { data.MouseHandlers &= ~handlerMask; } }