+
+ public class WindowFocusChangedEventArgs : EventArgs
+ {
+ public bool FocusGained
+ {
+ get;
+ set;
+ }
+ }
+
+ private WindowFocusChangedEventCallbackType _windowFocusChangedEventCallback;
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ private delegate void WindowFocusChangedEventCallbackType(bool focusGained);
+ private event EventHandler<WindowFocusChangedEventArgs> _windowFocusChangedEventHandler;
+
+ public event EventHandler<WindowFocusChangedEventArgs> WindowFocusChanged
+ {
+ add
+ {
+ if (_windowFocusChangedEventHandler == null)
+ {
+ _windowFocusChangedEventCallback = OnWindowFocusedChanged;
+ WindowFocusChangedSignal().Connect(_windowFocusChangedEventCallback);
+ }
+
+ _windowFocusChangedEventHandler += value;
+ }
+ remove
+ {
+ _windowFocusChangedEventHandler -= value;
+
+ if (_windowFocusChangedEventHandler == null && _windowFocusChangedEventCallback != null)
+ {
+ WindowFocusChangedSignal().Disconnect(_windowFocusChangedEventCallback);
+ }
+ }
+ }
+
+ private void OnWindowFocusedChanged(bool focusGained)
+ {
+ WindowFocusChangedEventArgs e = new WindowFocusChangedEventArgs();
+
+ e.FocusGained = focusGained;
+
+ if (_windowFocusChangedEventHandler != null)
+ {
+ _windowFocusChangedEventHandler(this, e);
+ }
+ }
+
+ public WindowFocusSignalType WindowFocusChangedSignal() {
+ WindowFocusSignalType ret = new WindowFocusSignalType(NDalicPINVOKE.FocusChangedSignal(swigCPtr), false);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ return ret;
+ }
+