static void DisableButtonEventHandler(Efl.Object obj, Interop.Eext.EextCallbackType type, bool removeHandler) { Interop.Eext.EextEventCallback cb; if (type == Interop.Eext.EextCallbackType.EEXT_CALLBACK_BACK) { if (_backButtonEventMap.TryGetValue(obj, out cb)) { Interop.Eext.eext_object_event_callback_del(obj.NativeHandle, type, cb); _backButtonEventMap.Remove(obj); } if (removeHandler && _backButtonEventHandlers.ContainsKey(obj)) { _backButtonEventHandlers.Remove(obj); } } else if (type == Interop.Eext.EextCallbackType.EEXT_CALLBACK_MORE) { if (_moreButtonEventMap.TryGetValue(obj, out cb)) { Interop.Eext.eext_object_event_callback_del(obj.NativeHandle, type, cb); _moreButtonEventMap.Remove(obj); } if (removeHandler && _moreButtonEventHandlers.ContainsKey(obj)) { _moreButtonEventHandlers.Remove(obj); } } }
static void EnableButtonEventHandler(Efl.Object obj, Interop.Eext.EextCallbackType type) { if (type == Interop.Eext.EextCallbackType.EEXT_CALLBACK_BACK) { if (!_backButtonEventMap.ContainsKey(obj)) { Interop.Eext.EextEventCallback cb = (d, o, i) => { EventHandler events; if (_backButtonEventHandlers.TryGetValue(obj, out events)) { events?.Invoke(obj, EventArgs.Empty); } }; Interop.Eext.eext_object_event_callback_add(obj.NativeHandle, type, cb, IntPtr.Zero); _backButtonEventMap[obj] = cb; obj.DelEvt += (s, e) => DisableButtonEventHandler(obj, type, true); } } else if (type == Interop.Eext.EextCallbackType.EEXT_CALLBACK_MORE) { if (!_moreButtonEventMap.ContainsKey(obj)) { Interop.Eext.EextEventCallback cb = (d, o, i) => { EventHandler events; if (_moreButtonEventHandlers.TryGetValue(obj, out events)) { events?.Invoke(obj, EventArgs.Empty); } }; Interop.Eext.eext_object_event_callback_add(obj.NativeHandle, type, cb, IntPtr.Zero); _moreButtonEventMap[obj] = cb; } } }