示例#1
0
        /// <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);
                }
            }
        }
示例#2
0
        /// <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);
                }
            }
        }
示例#3
0
        /// <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;
            }
        }