/// <summary> /// Adds or registers a event to a given canvas event. /// </summary> /// <param name="type">The type of event that triggers</param> /// <param name="action">The action to be called when the event is triggered</param> /// <since_tizen> preview </since_tizen> public void AddEventAction(EvasObjectCallbackType type, Action action) { if (action != null) { var eventData = new EventData(type, action); if (!_eventDatas.ContainsKey(eventData)) { var evasCallback = new Interop.Evas.EvasCallback((d, o, t) => action()); Interop.Evas.evas_event_callback_add(_handle, (Interop.Evas.ObjectCallbackType)type, evasCallback, IntPtr.Zero); _eventDatas.Add(eventData, evasCallback); } } }
/// <summary> /// Deletes a event to a given canvas event. /// </summary> /// <param name="type">The type of event that triggers</param> /// <param name="action">The action to be called when the event is triggered</param> /// <since_tizen> preview </since_tizen> public void DeleteEventAction(EvasObjectCallbackType type, Action action) { if (action != null) { var eventData = new EventData(type, action); Interop.Evas.EvasCallback evasCallback = null; _eventDatas.TryGetValue(eventData, out evasCallback); if (evasCallback != null) { Interop.Evas.evas_event_callback_del(_handle, (Interop.Evas.ObjectCallbackType)type, evasCallback); _eventDatas.Remove(eventData); } } }
/// <summary> /// Removes the current object relationship with others. /// </summary> /// <since_tizen> preview </since_tizen> public void Unrealize() { if (IsRealized) { if (_renderPostCallback != null) { Interop.Evas.evas_event_callback_del(Interop.Evas.evas_object_evas_get(Handle), Interop.Evas.ObjectCallbackType.RenderPost, _renderPostCallback); _renderPostCallback = null; } OnUnrealize(); IntPtr toBeDeleted = Handle; Handle = IntPtr.Zero; DisposeEvent(); (Parent as Window)?.RemoveChild(this); Interop.Evas.evas_object_del(toBeDeleted); Parent = null; } }