+ _imfManagerEventReceivedEventHandler(this, e);
+ }
+ }
+
+ /// <summary>
+ /// ImfManager event received event arguments.
+ /// </summary>
+ public class EventReceivedEventArgs : EventArgs
+ {
+ /// <summary>
+ /// ImfManager
+ /// </summary>
+ /// <since_tizen> 3 </since_tizen>
+ public ImfManager ImfManager
+ {
+ get;
+ set;
+ }
+
+ /// <summary>
+ /// ImfEventData
+ /// </summary>
+ /// <since_tizen> 3 </since_tizen>
+ public ImfEventData ImfEventData
+ {
+ get;
+ set;
+ }
+ }
+
+ private delegate IntPtr EventReceivedEventCallbackType(IntPtr imfManager, IntPtr imfEventData);
+ private EventReceivedEventCallbackType _eventReceivedEventCallback;
+ private event EventHandlerWithReturnType<object, EventReceivedEventArgs, ImfCallbackData> _eventReceivedEventHandler;
+
+ /// <summary>
+ /// ImfManager event received.
+ /// </summary>
+ /// <since_tizen> 4 </since_tizen>
+ public event EventHandlerWithReturnType<object, EventReceivedEventArgs, ImfCallbackData> EventReceived
+ {
+ add
+ {
+ if (_eventReceivedEventHandler == null)
+ {
+ _eventReceivedEventCallback = OnEventReceived;
+ EventReceivedSignal().Connect(_eventReceivedEventCallback);
+ }
+
+ _eventReceivedEventHandler += value;
+ }
+ remove
+ {
+ _eventReceivedEventHandler -= value;
+
+ if (_eventReceivedEventHandler == null && _eventReceivedEventCallback != null)
+ {
+ EventReceivedSignal().Disconnect(_eventReceivedEventCallback);
+ }
+ }
+ }
+
+ private IntPtr OnEventReceived(IntPtr imfManager, IntPtr imfEventData)
+ {
+ ImfCallbackData imfCallbackData = null;
+
+ EventReceivedEventArgs e = new EventReceivedEventArgs();
+
+ if (imfManager != null)
+ {
+ e.ImfManager = Registry.GetManagedBaseHandleFromNativePtr(imfManager) as ImfManager;
+ }
+ if (imfEventData != null)
+ {
+ e.ImfEventData = ImfEventData.GetImfEventDataFromPtr(imfEventData);
+ }
+
+ if (_eventReceivedEventHandler != null)
+ {
+ imfCallbackData = _eventReceivedEventHandler(this, e);