2 * Copyright(c) 2023 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 using System.ComponentModel;
20 using System.Runtime.InteropServices;
21 using Tizen.NUI.BaseComponents;
22 using System.Collections.Generic;
27 /// The window class is used internally for drawing.<br />
28 /// The window has an orientation and indicator properties.<br />
30 /// <since_tizen> 3 </since_tizen>
31 public partial class Window
33 private WindowFocusChangedEventCallbackType windowFocusChangedEventCallback;
34 private RootLayerTouchDataCallbackType rootLayerTouchDataCallback;
35 private RootLayerTouchDataCallbackType rootLayerInterceptTouchDataCallback;
36 private WheelEventCallbackType wheelEventCallback;
37 private WheelEventCallbackType interceptWheelCallback;
38 private EventCallbackDelegateType1 stageKeyCallbackDelegate;
39 private InterceptKeyEventDelegateType stageInterceptKeyCallbackDelegate;
40 private EventCallbackDelegateType0 stageEventProcessingFinishedEventCallbackDelegate;
41 private EventHandler stageContextLostEventHandler;
42 private EventCallbackDelegateType0 stageContextLostEventCallbackDelegate;
43 private EventHandler stageContextRegainedEventHandler;
44 private EventCallbackDelegateType0 stageContextRegainedEventCallbackDelegate;
45 private EventHandler stageSceneCreatedEventHandler;
46 private EventCallbackDelegateType0 stageSceneCreatedEventCallbackDelegate;
47 private WindowResizeEventCallbackType windowResizeEventCallback;
48 private WindowFocusChangedEventCallbackType windowFocusChangedEventCallback2;
49 private TransitionEffectEventCallbackType transitionEffectEventCallback;
50 private MovedEventCallbackType movedEventCallback;
51 private OrientationChangedEventCallbackType orientationChangedEventCallback;
52 private KeyboardRepeatSettingsChangedEventCallbackType keyboardRepeatSettingsChangedEventCallback;
53 private AuxiliaryMessageEventCallbackType auxiliaryMessageEventCallback;
54 private WindowMouseInOutEventCallbackType windowMouseInOutEventCallback;
55 private WindowMouseRelativeEventCallbackType windowMouseRelativeEventCallback;
56 private MoveCompletedEventCallbackType moveCompletedEventCallback;
57 private ResizeCompletedEventCallbackType resizeCompletedEventCallback;
58 private InsetsChangedEventCallbackType insetsChangedEventCallback;
59 private WindowPointerConstraintsEventCallback windowPointerConstraintsEventCallback;
60 private RootLayerHoverDataCallbackType rootLayerHoverDataCallback;
61 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
62 private delegate void WindowFocusChangedEventCallbackType(IntPtr window, bool focusGained);
63 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
64 private delegate bool RootLayerTouchDataCallbackType(IntPtr view, IntPtr touchData);
65 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
66 private delegate bool WheelEventCallbackType(IntPtr view, IntPtr wheelEvent);
67 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
68 private delegate void WindowResizeEventCallbackType(IntPtr window, IntPtr windowSize);
69 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
70 private delegate void WindowFocusChangedEventCallbackType2(IntPtr window, bool focusGained);
71 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
72 private delegate void TransitionEffectEventCallbackType(IntPtr window, int state, int type);
73 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
74 private delegate void MovedEventCallbackType(IntPtr window, IntPtr position);
75 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
76 private delegate void OrientationChangedEventCallbackType(IntPtr window, int orientation);
77 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
78 private delegate void KeyboardRepeatSettingsChangedEventCallbackType();
79 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
80 private delegate void AuxiliaryMessageEventCallbackType(IntPtr kData, IntPtr vData, IntPtr optionsArray);
81 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
82 private delegate bool InterceptKeyEventDelegateType(IntPtr arg1);
83 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
84 private delegate void WindowMouseInOutEventCallbackType(IntPtr window, IntPtr mouseEvent);
85 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
86 private delegate void WindowMouseRelativeEventCallbackType(IntPtr window, IntPtr mouseEvent);
87 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
88 private delegate void MoveCompletedEventCallbackType(IntPtr window, IntPtr position);
89 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
90 private delegate void ResizeCompletedEventCallbackType(IntPtr window, IntPtr size);
91 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
92 private delegate void InsetsChangedEventCallbackType(int partType, int partState, IntPtr extents);
93 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
94 private delegate void WindowPointerConstraintsEventCallback(IntPtr window, IntPtr constraintsEvent);
95 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
96 private delegate bool RootLayerHoverDataCallbackType(IntPtr view, IntPtr hoverData);
100 /// FocusChanged event.
102 /// <since_tizen> 3 </since_tizen>
103 public event EventHandler<FocusChangedEventArgs> FocusChanged
107 if (windowFocusChangedEventHandler == null)
109 windowFocusChangedEventCallback = OnWindowFocusedChanged;
110 using WindowFocusSignalType signal = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(SwigCPtr), false);
111 signal.Ensure()?.Connect(windowFocusChangedEventCallback);
113 windowFocusChangedEventHandler += value;
117 windowFocusChangedEventHandler -= value;
118 if (windowFocusChangedEventHandler == null && windowFocusChangedEventCallback != null)
120 using WindowFocusSignalType signal = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(SwigCPtr), false);
121 signal.Ensure()?.Disconnect(windowFocusChangedEventCallback);
122 windowFocusChangedEventCallback = null;
128 /// Emits the event when the screen is touched and when the touch ends.<br />
129 /// If there are multiple touch points then it is emitted when the first touch occurs and
130 /// when the last finger is lifted too.<br />
131 /// Even though incoming events are interrupted, the event occurs.<br />
133 /// <since_tizen> 3 </since_tizen>
134 public event EventHandler<TouchEventArgs> TouchEvent
138 if (rootLayerTouchDataEventHandler == null)
140 rootLayerTouchDataCallback = OnWindowTouch;
141 Interop.ActorSignal.TouchConnect(Layer.getCPtr(GetRootLayer()), rootLayerTouchDataCallback.ToHandleRef(this));
142 NDalicPINVOKE.ThrowExceptionIfExists();
144 rootLayerTouchDataEventHandler += value;
148 rootLayerTouchDataEventHandler -= value;
149 if (rootLayerTouchDataEventHandler == null && rootLayerTouchDataCallback != null)
151 Interop.ActorSignal.TouchDisconnect(Layer.getCPtr(GetRootLayer()), rootLayerTouchDataCallback.ToHandleRef(this));
152 NDalicPINVOKE.ThrowExceptionIfExists();
153 rootLayerTouchDataCallback = null;
160 /// An event for the touched signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
161 /// The touched signal is emitted when the touch input is received.<br />
162 /// This can receive touch events before child. <br />
163 /// If it returns false, the child can receive the touch event. If it returns true, the touch event is intercepted. So child cannot receive touch event.<br />
165 [EditorBrowsable(EditorBrowsableState.Never)]
166 public event ReturnTypeEventHandler<object, TouchEventArgs, bool> InterceptTouchEvent
170 if (rootLayerInterceptTouchDataEventHandler == null)
172 rootLayerInterceptTouchDataCallback = OnWindowInterceptTouch;
173 Interop.ActorSignal.InterceptTouchConnect(Layer.getCPtr(GetRootLayer()), rootLayerInterceptTouchDataCallback.ToHandleRef(this));
174 NDalicPINVOKE.ThrowExceptionIfExists();
176 rootLayerInterceptTouchDataEventHandler += value;
180 rootLayerInterceptTouchDataEventHandler -= value;
181 if (rootLayerInterceptTouchDataEventHandler == null && rootLayerInterceptTouchDataCallback != null)
183 Interop.ActorSignal.InterceptTouchDisconnect(Layer.getCPtr(GetRootLayer()), rootLayerInterceptTouchDataCallback.ToHandleRef(this));
184 NDalicPINVOKE.ThrowExceptionIfExists();
185 rootLayerInterceptTouchDataCallback = null;
191 /// Emits the event when the wheel event is received.
193 /// <since_tizen> 3 </since_tizen>
194 public event EventHandler<WheelEventArgs> WheelEvent
198 if (stageWheelHandler == null)
200 wheelEventCallback = OnStageWheel;
201 Interop.ActorSignal.WheelEventConnect(Layer.getCPtr(GetRootLayer()), wheelEventCallback.ToHandleRef(this));
202 NDalicPINVOKE.ThrowExceptionIfExists();
204 stageWheelHandler += value;
206 if (DetentEventHandler == null)
208 DetentEventCallback = OnDetentEvent;
209 using StageWheelSignal signal = new StageWheelSignal(Interop.StageSignal.WheelEventSignal(stageCPtr), false);
210 signal.Ensure()?.Connect(DetentEventCallback);
212 DetentEventHandler += value;
216 stageWheelHandler -= value;
217 if (stageWheelHandler == null && wheelEventCallback != null)
219 Interop.ActorSignal.WheelEventDisconnect(Layer.getCPtr(GetRootLayer()), wheelEventCallback.ToHandleRef(this));
220 NDalicPINVOKE.ThrowExceptionIfExists();
221 wheelEventCallback = null;
224 DetentEventHandler -= value;
225 if (DetentEventHandler == null && DetentEventCallback != null)
227 using StageWheelSignal signal = new StageWheelSignal(Interop.StageSignal.WheelEventSignal(stageCPtr), false);
228 signal.Ensure()?.Disconnect(DetentEventCallback);
229 DetentEventCallback = null;
235 /// An event for the wheel event signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
236 /// The wheel event signal is emitted when the wheel input is received.<br />
237 /// This can receive wheel events before child. <br />
238 /// If it returns false, the child can receive the wheel event. If it returns true, the wheel event is intercepted. So child cannot receive wheel event.<br />
240 [EditorBrowsable(EditorBrowsableState.Never)]
241 public event ReturnTypeEventHandler<object, WheelEventArgs, bool> InterceptWheelEvent
245 if (interceptWheelHandler == null)
247 interceptWheelCallback = OnWindowInterceptWheel;
248 Interop.ActorSignal.InterceptWheelConnect(Layer.getCPtr(GetRootLayer()), interceptWheelCallback.ToHandleRef(this));
249 NDalicPINVOKE.ThrowExceptionIfExists();
251 interceptWheelHandler += value;
255 interceptWheelHandler -= value;
256 if (interceptWheelHandler == null && interceptWheelCallback != null)
258 Interop.ActorSignal.InterceptWheelDisconnect(Layer.getCPtr(GetRootLayer()), interceptWheelCallback.ToHandleRef(this));
259 NDalicPINVOKE.ThrowExceptionIfExists();
260 interceptWheelCallback = null;
266 /// Emits the event when the key event is received.
268 /// <since_tizen> 3 </since_tizen>
269 public event EventHandler<KeyEventArgs> KeyEvent
273 if (stageKeyHandler == null)
275 stageKeyCallbackDelegate = OnStageKey;
276 using KeyEventSignal signal = new KeyEventSignal(Interop.Window.KeyEventSignal(SwigCPtr), false);
277 signal.Ensure()?.Connect(stageKeyCallbackDelegate);
279 stageKeyHandler += value;
283 stageKeyHandler -= value;
284 if (stageKeyHandler == null && stageKeyCallbackDelegate != null)
286 using KeyEventSignal signal = new KeyEventSignal(Interop.Window.KeyEventSignal(SwigCPtr), false);
287 signal.Ensure()?.Disconnect(stageKeyCallbackDelegate);
288 stageKeyCallbackDelegate = null;
294 /// Intercepts KeyEvents in the window before dispatching KeyEvents to the child.<br />
295 /// If it returns true(consumed), no KeyEvent is delivered to the child.
297 [EditorBrowsable(EditorBrowsableState.Never)]
298 public event ReturnTypeEventHandler<object, KeyEventArgs, bool> InterceptKeyEvent
302 if (stageInterceptKeyHandler == null)
304 stageInterceptKeyCallbackDelegate = OnStageInterceptKey;
305 using KeyEventSignal signal = new KeyEventSignal(Interop.Window.InterceptKeyEventSignal(SwigCPtr), false);
306 signal.Ensure()?.Connect(stageInterceptKeyCallbackDelegate);
308 stageInterceptKeyHandler += value;
312 stageInterceptKeyHandler -= value;
313 if (stageInterceptKeyHandler == null && stageInterceptKeyCallbackDelegate != null)
315 using KeyEventSignal signal = new KeyEventSignal(Interop.Window.InterceptKeyEventSignal(SwigCPtr), false);
316 signal.Ensure()?.Disconnect(stageInterceptKeyCallbackDelegate);
317 stageInterceptKeyCallbackDelegate = null;
323 /// Emits the event when window is resized by user or the display server.<br />
325 /// <since_tizen> 3 </since_tizen>
326 public event EventHandler<ResizedEventArgs> Resized
330 if (windowResizeEventHandler == null)
332 windowResizeEventCallback = OnResized;
333 using ResizeSignal signal = new ResizeSignal(Interop.Window.ResizeSignal(SwigCPtr), false);
334 signal.Ensure()?.Connect(windowResizeEventCallback);
337 windowResizeEventHandler += value;
341 windowResizeEventHandler -= value;
342 if (windowResizeEventHandler == null && windowResizeEventCallback != null)
344 using ResizeSignal signal = new ResizeSignal(Interop.Window.ResizeSignal(SwigCPtr), false);
345 signal.Ensure()?.Disconnect(windowResizeEventCallback);
346 windowResizeEventCallback = null;
352 /// An event for the hovered signal which can be used to subscribe or unsubscribe the event handler provided by the user.<br />
353 /// The hovered signal is emitted when the hover input is received.<br />
355 [EditorBrowsable(EditorBrowsableState.Never)]
356 public event EventHandler<HoverEventArgs> HoverEvent
360 if (rootLayerHoverDataEventHandler == null)
362 rootLayerHoverDataCallback = OnWindowHover;
363 Interop.ActorSignal.HoveredConnect(Layer.getCPtr(GetRootLayer()), rootLayerHoverDataCallback.ToHandleRef(this));
364 NDalicPINVOKE.ThrowExceptionIfExists();
366 rootLayerHoverDataEventHandler += value;
370 rootLayerHoverDataEventHandler -= value;
371 if (rootLayerHoverDataEventHandler == null && rootLayerHoverDataCallback != null)
373 Interop.ActorSignal.HoveredDisconnect(Layer.getCPtr(GetRootLayer()), rootLayerHoverDataCallback.ToHandleRef(this));
374 NDalicPINVOKE.ThrowExceptionIfExists();
375 rootLayerHoverDataCallback = null;
381 /// Do not use this, that will be deprecated. Use 'FocusChanged' event instead.
383 /// <since_tizen> 3 </since_tizen>
384 /// Do not use this, that will be deprecated.
385 /// Instead Use FocusChanged.
386 [Obsolete("Do not use this, that will be deprecated. Use FocusChanged instead. " +
388 "NUIApplication.GetDefaultWindow().FocusChanged = OnFocusChanged; " +
389 "private void OnFocusChanged(object source, Window.FocusChangedEventArgs args) {...}")]
390 [EditorBrowsable(EditorBrowsableState.Never)]
391 public event EventHandler<FocusChangedEventArgs> WindowFocusChanged
395 if (windowFocusChangedEventHandler2 == null)
397 windowFocusChangedEventCallback2 = OnWindowFocusedChanged2;
398 using WindowFocusSignalType signal = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(SwigCPtr), false);
399 signal.Ensure()?.Connect(windowFocusChangedEventCallback2);
401 windowFocusChangedEventHandler2 += value;
405 windowFocusChangedEventHandler2 -= value;
406 if (windowFocusChangedEventHandler2 == null && windowFocusChangedEventCallback2 != null)
408 using WindowFocusSignalType signal = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(SwigCPtr), false);
409 signal.Ensure()?.Disconnect(windowFocusChangedEventCallback2);
410 windowFocusChangedEventCallback2 = null;
418 [EditorBrowsable(EditorBrowsableState.Never)]
419 public event EventHandler<TransitionEffectEventArgs> TransitionEffect
423 if (transitionEffectHandler == null)
425 transitionEffectEventCallback = OnTransitionEffect;
426 using WindowTransitionEffectSignal signal = new WindowTransitionEffectSignal(Interop.WindowTransitionEffectSignal.GetSignal(SwigCPtr), false);
427 signal.Ensure()?.Connect(transitionEffectEventCallback);
429 transitionEffectHandler += value;
433 transitionEffectHandler -= value;
434 if (transitionEffectHandler == null && transitionEffectEventCallback != null)
436 using WindowTransitionEffectSignal signal = new WindowTransitionEffectSignal(Interop.WindowTransitionEffectSignal.GetSignal(SwigCPtr), false);
437 signal.Ensure()?.Disconnect(transitionEffectEventCallback);
438 transitionEffectEventCallback = null;
444 /// Emits the event when window is moved by user or the display server.<br />
446 [EditorBrowsable(EditorBrowsableState.Never)]
447 public event EventHandler<WindowMovedEventArgs> Moved
451 if (movedHandler == null)
453 movedEventCallback = OnMoved;
454 using WindowMovedSignal signal = new WindowMovedSignal(Interop.WindowMovedSignal.GetSignal(SwigCPtr), false);
455 signal.Ensure()?.Connect(movedEventCallback);
457 movedHandler += value;
461 movedHandler -= value;
462 if (movedHandler == null && movedEventCallback != null)
464 using WindowMovedSignal signal = new WindowMovedSignal(Interop.WindowMovedSignal.GetSignal(SwigCPtr), false);
465 signal.Ensure()?.Disconnect(movedEventCallback);
466 movedEventCallback = null;
472 /// Window Orientation Changed event
473 /// This event is for per windows
475 [EditorBrowsable(EditorBrowsableState.Never)]
476 public event EventHandler<WindowOrientationChangedEventArgs> OrientationChanged
480 if (orientationChangedHandler == null)
482 orientationChangedEventCallback = OnOrientationChanged;
483 using WindowOrientationChangedSignal signal = new WindowOrientationChangedSignal(Interop.WindowOrientationChangedSignal.GetSignal(SwigCPtr), false);
484 signal.Ensure()?.Connect(orientationChangedEventCallback);
486 orientationChangedHandler += value;
490 orientationChangedHandler -= value;
491 if (orientationChangedHandler == null && orientationChangedEventCallback != null)
493 using WindowOrientationChangedSignal signal = new WindowOrientationChangedSignal(Interop.WindowOrientationChangedSignal.GetSignal(SwigCPtr), false);
494 signal.Ensure()?.Disconnect(orientationChangedEventCallback);
495 orientationChangedEventCallback = null;
501 /// Keyboard Repeat Settings Changed
503 [EditorBrowsable(EditorBrowsableState.Never)]
504 public event EventHandler KeyboardRepeatSettingsChanged
508 if (keyboardRepeatSettingsChangedHandler == null)
510 keyboardRepeatSettingsChangedEventCallback = OnKeyboardRepeatSettingsChanged;
511 using KeyboardRepeatSettingsChangedSignal signal = new KeyboardRepeatSettingsChangedSignal(Interop.KeyboardRepeatSettingsChangedSignal.GetSignal(SwigCPtr), false);
512 signal.Ensure()?.Connect(keyboardRepeatSettingsChangedEventCallback);
514 keyboardRepeatSettingsChangedHandler += value;
518 keyboardRepeatSettingsChangedHandler -= value;
519 if (keyboardRepeatSettingsChangedHandler == null && keyboardRepeatSettingsChangedEventCallback != null)
521 using KeyboardRepeatSettingsChangedSignal signal = new KeyboardRepeatSettingsChangedSignal(Interop.KeyboardRepeatSettingsChangedSignal.GetSignal(SwigCPtr), false);
522 signal.Ensure()?.Disconnect(keyboardRepeatSettingsChangedEventCallback);
523 keyboardRepeatSettingsChangedEventCallback = null;
529 /// MouseInOutEvent event.
531 [EditorBrowsable(EditorBrowsableState.Never)]
532 public event EventHandler<MouseInOutEventArgs> MouseInOutEvent
536 if (windowMouseInOutEventHandler == null)
538 windowMouseInOutEventCallback = OnWindowMouseInOutEvent;
539 using WindowMouseInOutEventSignal signal = new WindowMouseInOutEventSignal(Interop.WindowMouseInOutEventSignal.GetSignal(SwigCPtr), false);
540 signal.Ensure()?.Connect(windowMouseInOutEventCallback);
542 windowMouseInOutEventHandler += value;
546 windowMouseInOutEventHandler -= value;
547 if (windowMouseInOutEventHandler == null && windowMouseInOutEventCallback != null)
549 using WindowMouseInOutEventSignal signal = new WindowMouseInOutEventSignal(Interop.WindowMouseInOutEventSignal.GetSignal(SwigCPtr), false);
550 signal.Ensure()?.Disconnect(windowMouseInOutEventCallback);
551 windowMouseInOutEventCallback = null;
557 /// Emits the event when window has been moved by the display server.<br />
558 /// To make the window move by display server, RequestMoveToServer() should be called.<br />
559 /// After the moving job is completed, this signal will be emitted.<br />
561 [EditorBrowsable(EditorBrowsableState.Never)]
562 public event EventHandler<WindowMoveCompletedEventArgs> MoveCompleted
566 if (moveCompletedHandler == null)
568 moveCompletedEventCallback = OnMoveCompleted;
569 using WindowMoveCompletedSignal signal = new WindowMoveCompletedSignal(Interop.WindowMoveCompletedSignal.GetSignal(SwigCPtr), false);
570 signal.Ensure()?.Connect(moveCompletedEventCallback);
572 moveCompletedHandler += value;
576 moveCompletedHandler -= value;
577 if (moveCompletedHandler == null && moveCompletedEventCallback != null)
579 using WindowMoveCompletedSignal signal = new WindowMoveCompletedSignal(Interop.WindowMoveCompletedSignal.GetSignal(SwigCPtr), false);
580 signal.Ensure()?.Disconnect(moveCompletedEventCallback);
581 moveCompletedEventCallback = null;
587 /// Emits the event when window has been resized by the display server.<br />
588 /// To make the window resize by display server, RequestResizeToServer() should be called.<br />
589 /// After the resizing job is completed, this signal will be emitted.<br />
591 [EditorBrowsable(EditorBrowsableState.Never)]
592 public event EventHandler<WindowResizeCompletedEventArgs> ResizeCompleted
596 if (resizeCompletedHandler == null)
598 resizeCompletedEventCallback = OnResizeCompleted;
599 using WindowResizeCompletedSignal signal = new WindowResizeCompletedSignal(Interop.WindowResizeCompletedSignal.GetSignal(SwigCPtr), false);
600 signal.Ensure()?.Connect(resizeCompletedEventCallback);
602 resizeCompletedHandler += value;
606 resizeCompletedHandler -= value;
607 if (resizeCompletedHandler == null && resizeCompletedEventCallback != null)
609 using WindowResizeCompletedSignal signal = new WindowResizeCompletedSignal(Interop.WindowResizeCompletedSignal.GetSignal(SwigCPtr), false);
610 signal.Ensure()?.Disconnect(resizeCompletedEventCallback);
611 resizeCompletedEventCallback = null;
617 /// Emits the event when relative mouse movement occurs in the window.<br />
619 [EditorBrowsable(EditorBrowsableState.Never)]
620 public event EventHandler<MouseRelativeEventArgs> MouseRelativeEvent
624 if (windowMouseRelativeEventHandler == null)
626 windowMouseRelativeEventCallback = OnWindowMouseRelativeEvent;
627 using WindowMouseRelativeEventSignal signal = new WindowMouseRelativeEventSignal(Interop.WindowMouseRelativeEventSignal.GetSignal(SwigCPtr), false);
628 signal?.Connect(windowMouseRelativeEventCallback);
630 windowMouseRelativeEventHandler += value;
634 windowMouseRelativeEventHandler -= value;
635 if (windowMouseRelativeEventHandler == null && windowMouseRelativeEventCallback != null)
637 using WindowMouseRelativeEventSignal signal = new WindowMouseRelativeEventSignal(Interop.WindowMouseRelativeEventSignal.GetSignal(SwigCPtr), false);
638 signal?.Disconnect(windowMouseRelativeEventCallback);
639 windowMouseRelativeEventCallback = null;
645 /// Emits the event when pointer is locked/unlocked<br />
647 [EditorBrowsable(EditorBrowsableState.Never)]
648 public event EventHandler<PointerConstraintsEventArgs> PointerConstraintsEvent
652 if (windowPointerConstraintsEventHandler == null)
654 windowPointerConstraintsEventCallback = OnWindowPointerConstraintsEvent;
655 using WindowPointerConstraintsSignal signal = new WindowPointerConstraintsSignal(Interop.WindowPointerConstraintsSignal.GetSignal(SwigCPtr), false);
656 signal?.Connect(windowPointerConstraintsEventCallback);
658 windowPointerConstraintsEventHandler += value;
662 windowPointerConstraintsEventHandler -= value;
663 if (windowPointerConstraintsEventHandler == null && windowPointerConstraintsEventCallback != null)
665 using WindowPointerConstraintsSignal signal = new WindowPointerConstraintsSignal(Interop.WindowPointerConstraintsSignal.GetSignal(SwigCPtr), false);
666 signal?.Disconnect(windowPointerConstraintsEventCallback);
667 windowPointerConstraintsEventCallback = null;
672 private event EventHandler<FocusChangedEventArgs> windowFocusChangedEventHandler;
673 private event EventHandler<TouchEventArgs> rootLayerTouchDataEventHandler;
674 private ReturnTypeEventHandler<object, TouchEventArgs, bool> rootLayerInterceptTouchDataEventHandler;
675 private event EventHandler<WheelEventArgs> stageWheelHandler;
676 private ReturnTypeEventHandler<object, WheelEventArgs, bool> interceptWheelHandler;
677 private event EventHandler<KeyEventArgs> stageKeyHandler;
678 private ReturnTypeEventHandler<object, KeyEventArgs, bool> stageInterceptKeyHandler;
679 private event EventHandler stageEventProcessingFinishedEventHandler;
680 private event EventHandler<ResizedEventArgs> windowResizeEventHandler;
681 private event EventHandler<FocusChangedEventArgs> windowFocusChangedEventHandler2;
682 private event EventHandler<TransitionEffectEventArgs> transitionEffectHandler;
683 private event EventHandler<WindowMovedEventArgs> movedHandler;
684 private event EventHandler<WindowOrientationChangedEventArgs> orientationChangedHandler;
685 private event EventHandler keyboardRepeatSettingsChangedHandler;
686 private event EventHandler<AuxiliaryMessageEventArgs> auxiliaryMessageEventHandler;
687 private event EventHandler<MouseInOutEventArgs> windowMouseInOutEventHandler;
688 private event EventHandler<MouseRelativeEventArgs> windowMouseRelativeEventHandler;
689 private event EventHandler<WindowMoveCompletedEventArgs> moveCompletedHandler;
690 private event EventHandler<WindowResizeCompletedEventArgs> resizeCompletedHandler;
691 private event EventHandler<InsetsChangedEventArgs> insetsChangedEventHandler;
692 private event EventHandler<PointerConstraintsEventArgs> windowPointerConstraintsEventHandler;
693 private event EventHandler<HoverEventArgs> rootLayerHoverDataEventHandler;
696 internal event EventHandler EventProcessingFinished
700 if (stageEventProcessingFinishedEventHandler == null)
702 stageEventProcessingFinishedEventCallbackDelegate = OnEventProcessingFinished;
703 using VoidSignal signal = new VoidSignal(Interop.StageSignal.EventProcessingFinishedSignal(stageCPtr), false);
704 signal.Ensure()?.Connect(stageEventProcessingFinishedEventCallbackDelegate);
706 stageEventProcessingFinishedEventHandler += value;
710 stageEventProcessingFinishedEventHandler -= value;
711 if (stageEventProcessingFinishedEventHandler == null && stageEventProcessingFinishedEventCallbackDelegate != null)
713 using VoidSignal signal = new VoidSignal(Interop.StageSignal.EventProcessingFinishedSignal(stageCPtr), false);
714 signal.Ensure()?.Disconnect(stageEventProcessingFinishedEventCallbackDelegate);
715 stageEventProcessingFinishedEventCallbackDelegate = null;
720 internal event EventHandler ContextLost
724 if (stageContextLostEventHandler == null)
726 stageContextLostEventCallbackDelegate = OnContextLost;
727 using VoidSignal signal = new VoidSignal(Interop.StageSignal.ContextLostSignal(stageCPtr), false);
728 signal.Ensure()?.Connect(stageContextLostEventCallbackDelegate);
730 stageContextLostEventHandler += value;
734 stageContextLostEventHandler -= value;
735 if (stageContextLostEventHandler == null && stageContextLostEventCallbackDelegate != null)
737 using VoidSignal signal = new VoidSignal(Interop.StageSignal.ContextLostSignal(stageCPtr), false);
738 signal.Ensure()?.Disconnect(stageContextLostEventCallbackDelegate);
739 stageContextLostEventCallbackDelegate = null;
744 internal event EventHandler ContextRegained
748 if (stageContextRegainedEventHandler == null)
750 stageContextRegainedEventCallbackDelegate = OnContextRegained;
751 using VoidSignal signal = new VoidSignal(Interop.StageSignal.ContextRegainedSignal(stageCPtr), false);
752 signal.Ensure()?.Connect(stageContextRegainedEventCallbackDelegate);
754 stageContextRegainedEventHandler += value;
758 stageContextRegainedEventHandler -= value;
759 if (stageContextRegainedEventHandler == null && stageContextRegainedEventCallbackDelegate != null)
761 using VoidSignal signal = new VoidSignal(Interop.StageSignal.ContextRegainedSignal(stageCPtr), false);
762 signal.Ensure()?.Disconnect(stageContextRegainedEventCallbackDelegate);
763 stageContextRegainedEventCallbackDelegate = null;
768 internal event EventHandler SceneCreated
772 if (stageSceneCreatedEventHandler == null)
774 stageSceneCreatedEventCallbackDelegate = OnSceneCreated;
775 using VoidSignal signal = new VoidSignal(Interop.StageSignal.SceneCreatedSignal(stageCPtr), false);
776 signal.Ensure()?.Connect(stageSceneCreatedEventCallbackDelegate);
778 stageSceneCreatedEventHandler += value;
782 stageSceneCreatedEventHandler -= value;
783 if (stageSceneCreatedEventHandler == null && stageSceneCreatedEventCallbackDelegate != null)
785 using VoidSignal signal = new VoidSignal(Interop.StageSignal.SceneCreatedSignal(stageCPtr), false);
786 signal.Ensure()?.Disconnect(stageSceneCreatedEventCallbackDelegate);
787 stageSceneCreatedEventCallbackDelegate = null;
792 internal System.IntPtr GetNativeWindowHandler()
794 System.IntPtr ret = Interop.Window.GetNativeWindowHandler(HandleRef.ToIntPtr(this.SwigCPtr));
795 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
800 /// Disconnect all native signals
802 /// <since_tizen> 5 </since_tizen>
803 internal void DisconnectNativeSignals()
805 if (HasBody() == false)
807 NUILog.Debug($"[Dispose] DisConnectFromSignals() No native body! No need to Disconnect Signals!");
811 if (windowFocusChangedEventCallback != null)
813 using WindowFocusSignalType signal = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(GetBaseHandleCPtrHandleRef), false);
814 signal?.Disconnect(windowFocusChangedEventCallback);
815 windowFocusChangedEventCallback = null;
818 if (rootLayerTouchDataCallback != null)
820 Interop.ActorSignal.TouchDisconnect(Layer.getCPtr(GetRootLayer()), rootLayerTouchDataCallback.ToHandleRef(this));
821 NDalicPINVOKE.ThrowExceptionIfExists();
822 rootLayerTouchDataCallback = null;
825 if (rootLayerInterceptTouchDataCallback != null)
827 Interop.ActorSignal.InterceptTouchDisconnect(Layer.getCPtr(GetRootLayer()), rootLayerInterceptTouchDataCallback.ToHandleRef(this));
828 NDalicPINVOKE.ThrowExceptionIfExists();
829 rootLayerInterceptTouchDataCallback = null;
832 if (wheelEventCallback != null)
834 Interop.ActorSignal.WheelEventDisconnect(Layer.getCPtr(GetRootLayer()), wheelEventCallback.ToHandleRef(this));
835 NDalicPINVOKE.ThrowExceptionIfExists();
836 wheelEventCallback = null;
839 if (DetentEventCallback != null)
841 using StageWheelSignal signal = new StageWheelSignal(Interop.StageSignal.WheelEventSignal(stageCPtr), false);
842 signal?.Disconnect(DetentEventCallback);
843 DetentEventCallback = null;
846 if (interceptWheelCallback != null)
848 Interop.ActorSignal.InterceptWheelDisconnect(Layer.getCPtr(GetRootLayer()), interceptWheelCallback.ToHandleRef(this));
849 NDalicPINVOKE.ThrowExceptionIfExists();
850 interceptWheelCallback = null;
853 if (stageKeyCallbackDelegate != null)
855 using KeyEventSignal signal = new KeyEventSignal(Interop.Window.KeyEventSignal(GetBaseHandleCPtrHandleRef), false);
856 signal?.Disconnect(stageKeyCallbackDelegate);
857 stageKeyCallbackDelegate = null;
860 if (stageInterceptKeyCallbackDelegate != null)
862 using KeyEventSignal signal = new KeyEventSignal(Interop.Window.InterceptKeyEventSignal(GetBaseHandleCPtrHandleRef), false);
863 signal?.Disconnect(stageInterceptKeyCallbackDelegate);
864 stageInterceptKeyCallbackDelegate = null;
867 if (stageEventProcessingFinishedEventCallbackDelegate != null)
869 using VoidSignal signal = new VoidSignal(Interop.StageSignal.EventProcessingFinishedSignal(stageCPtr), false);
870 signal?.Disconnect(stageEventProcessingFinishedEventCallbackDelegate);
871 stageEventProcessingFinishedEventCallbackDelegate = null;
874 if (stageContextLostEventCallbackDelegate != null)
876 using VoidSignal signal = new VoidSignal(Interop.StageSignal.ContextLostSignal(stageCPtr), false);
877 signal?.Disconnect(stageContextLostEventCallbackDelegate);
878 stageContextLostEventCallbackDelegate = null;
881 if (stageContextRegainedEventCallbackDelegate != null)
883 using VoidSignal signal = new VoidSignal(Interop.StageSignal.ContextRegainedSignal(stageCPtr), false);
884 signal?.Disconnect(stageContextRegainedEventCallbackDelegate);
885 stageContextRegainedEventCallbackDelegate = null;
888 if (stageSceneCreatedEventCallbackDelegate != null)
890 using VoidSignal signal = new VoidSignal(Interop.StageSignal.SceneCreatedSignal(stageCPtr), false);
891 signal?.Disconnect(stageSceneCreatedEventCallbackDelegate);
892 stageSceneCreatedEventCallbackDelegate = null;
895 if (windowResizeEventCallback != null)
897 using ResizeSignal signal = new ResizeSignal(Interop.Window.ResizeSignal(GetBaseHandleCPtrHandleRef), false);
898 signal?.Disconnect(windowResizeEventCallback);
899 windowResizeEventCallback = null;
902 if (windowFocusChangedEventCallback2 != null)
904 using WindowFocusSignalType signal = new WindowFocusSignalType(Interop.Window.FocusChangedSignal(GetBaseHandleCPtrHandleRef), false);
905 signal?.Disconnect(windowFocusChangedEventCallback2);
906 windowFocusChangedEventCallback2 = null;
909 if (transitionEffectEventCallback != null)
911 using WindowTransitionEffectSignal signal = new WindowTransitionEffectSignal(Interop.WindowTransitionEffectSignal.GetSignal(GetBaseHandleCPtrHandleRef), false);
912 signal?.Disconnect(transitionEffectEventCallback);
913 transitionEffectEventCallback = null;
916 if (movedEventCallback != null)
918 using WindowMovedSignal signal = new WindowMovedSignal(Interop.WindowMovedSignal.GetSignal(GetBaseHandleCPtrHandleRef), false);
919 signal?.Disconnect(movedEventCallback);
920 movedEventCallback = null;
923 if (orientationChangedEventCallback != null)
925 using WindowOrientationChangedSignal signal = new WindowOrientationChangedSignal(Interop.WindowOrientationChangedSignal.GetSignal(GetBaseHandleCPtrHandleRef), false);
926 signal?.Disconnect(orientationChangedEventCallback);
927 orientationChangedEventCallback = null;
930 if (keyboardRepeatSettingsChangedEventCallback != null)
932 using KeyboardRepeatSettingsChangedSignal signal = new KeyboardRepeatSettingsChangedSignal(Interop.KeyboardRepeatSettingsChangedSignal.GetSignal(GetBaseHandleCPtrHandleRef), false);
933 signal?.Disconnect(keyboardRepeatSettingsChangedEventCallback);
934 keyboardRepeatSettingsChangedEventCallback = null;
937 if (auxiliaryMessageEventCallback != null)
939 using WindowAuxiliaryMessageSignal signal = new WindowAuxiliaryMessageSignal(Interop.WindowAuxiliaryMessageSignalType.Get(GetBaseHandleCPtrHandleRef), false);
940 signal?.Disconnect(auxiliaryMessageEventCallback);
941 auxiliaryMessageEventCallback = null;
944 if (AccessibilityHighlightEventCallback != null)
946 using WindowAccessibilityHighlightEvent signal = new WindowAccessibilityHighlightEvent(Interop.WindowAccessibilityHighlightSignal.GetSignal(GetBaseHandleCPtrHandleRef), false);
947 signal?.Disconnect(AccessibilityHighlightEventCallback);
948 AccessibilityHighlightEventCallback = null;
951 if (windowMouseInOutEventCallback != null)
953 using WindowMouseInOutEventSignal signal = new WindowMouseInOutEventSignal(Interop.WindowMouseInOutEventSignal.GetSignal(GetBaseHandleCPtrHandleRef), false);
954 signal?.Disconnect(windowMouseInOutEventCallback);
955 windowMouseInOutEventCallback = null;
958 if (windowMouseRelativeEventCallback != null)
960 using WindowMouseRelativeEventSignal signal = new WindowMouseRelativeEventSignal(Interop.WindowMouseRelativeEventSignal.GetSignal(GetBaseHandleCPtrHandleRef), false);
961 signal?.Disconnect(windowMouseRelativeEventCallback);
962 windowMouseRelativeEventCallback = null;
965 if (moveCompletedEventCallback != null)
967 using WindowMoveCompletedSignal signal = new WindowMoveCompletedSignal(Interop.WindowMoveCompletedSignal.GetSignal(GetBaseHandleCPtrHandleRef), false);
968 signal?.Disconnect(moveCompletedEventCallback);
969 moveCompletedEventCallback = null;
972 if (resizeCompletedEventCallback != null)
974 using WindowResizeCompletedSignal signal = new WindowResizeCompletedSignal(Interop.WindowResizeCompletedSignal.GetSignal(GetBaseHandleCPtrHandleRef), false);
975 signal?.Disconnect(resizeCompletedEventCallback);
976 resizeCompletedEventCallback = null;
979 if (insetsChangedEventCallback != null)
981 using WindowInsetsChangedSignal signal = new WindowInsetsChangedSignal(Interop.WindowInsetsChangedSignalType.Get(GetBaseHandleCPtrHandleRef), false);
982 signal?.Disconnect(insetsChangedEventCallback);
983 insetsChangedEventCallback = null;
986 if (windowPointerConstraintsEventCallback != null)
988 using WindowPointerConstraintsSignal signal = new WindowPointerConstraintsSignal(Interop.WindowPointerConstraintsSignal.GetSignal(GetBaseHandleCPtrHandleRef), false);
989 signal?.Disconnect(windowPointerConstraintsEventCallback);
990 windowPointerConstraintsEventCallback = null;
993 if (rootLayerHoverDataCallback != null)
995 Interop.ActorSignal.HoveredDisconnect(Layer.getCPtr(GetRootLayer()), rootLayerHoverDataCallback.ToHandleRef(this));
996 NDalicPINVOKE.ThrowExceptionIfExists();
997 rootLayerHoverDataCallback = null;
1001 private void OnWindowFocusedChanged(IntPtr window, bool focusGained)
1003 if (window == IntPtr.Zero)
1005 NUILog.Error("OnWindowFocusedChanged() Window is null! Do nothing!");
1009 if (windowFocusChangedEventHandler != null)
1011 FocusChangedEventArgs e = new FocusChangedEventArgs();
1012 e.FocusGained = focusGained;
1013 windowFocusChangedEventHandler(this, e);
1017 private bool OnWindowTouch(IntPtr view, IntPtr touchData)
1019 if (touchData == global::System.IntPtr.Zero)
1021 NUILog.Error("touchData should not be null!");
1025 if (rootLayerTouchDataEventHandler != null)
1027 TouchEventArgs e = new TouchEventArgs();
1028 e.Touch = Tizen.NUI.Touch.GetTouchFromPtr(touchData);
1029 rootLayerTouchDataEventHandler(this, e);
1034 private bool OnWindowInterceptTouch(IntPtr view, IntPtr touchData)
1036 if (touchData == global::System.IntPtr.Zero)
1038 NUILog.Error("touchData should not be null!");
1042 bool consumed = false;
1043 if (rootLayerInterceptTouchDataEventHandler != null)
1045 TouchEventArgs e = new TouchEventArgs();
1046 e.Touch = Tizen.NUI.Touch.GetTouchFromPtr(touchData);
1047 consumed = rootLayerInterceptTouchDataEventHandler(this, e);
1052 private bool OnStageWheel(IntPtr rootLayer, IntPtr wheelEvent)
1054 if (wheelEvent == global::System.IntPtr.Zero)
1056 NUILog.Error("wheelEvent should not be null!");
1060 if (stageWheelHandler != null)
1062 WheelEventArgs e = new WheelEventArgs();
1063 e.Wheel = Tizen.NUI.Wheel.GetWheelFromPtr(wheelEvent);
1064 stageWheelHandler(this, e);
1069 private bool OnWindowInterceptWheel(IntPtr view, IntPtr wheelEvent)
1071 if (wheelEvent == global::System.IntPtr.Zero)
1073 NUILog.Error("wheelEvent should not be null!");
1077 bool consumed = false;
1078 if (interceptWheelHandler != null)
1080 WheelEventArgs e = new WheelEventArgs();
1081 e.Wheel = Tizen.NUI.Wheel.GetWheelFromPtr(wheelEvent);
1082 consumed = interceptWheelHandler(this, e);
1087 // Callback for Stage KeyEventsignal
1088 private void OnStageKey(IntPtr data)
1090 if (stageKeyHandler != null)
1092 KeyEventArgs e = new KeyEventArgs();
1093 e.Key = Tizen.NUI.Key.GetKeyFromPtr(data);
1094 //here we send all data to user event handlers
1095 stageKeyHandler(this, e);
1099 // Callback for Stage InterceptKeyEventsignal
1100 private bool OnStageInterceptKey(IntPtr data)
1102 bool consumed = false;
1103 if (stageInterceptKeyHandler != null)
1105 KeyEventArgs e = new KeyEventArgs();
1106 e.Key = Tizen.NUI.Key.GetKeyFromPtr(data);
1107 //here we send all data to user event handlers
1108 consumed = stageInterceptKeyHandler(this, e);
1113 // Callback for Stage EventProcessingFinishedSignal
1114 private void OnEventProcessingFinished()
1116 stageEventProcessingFinishedEventHandler?.Invoke(this, null);
1119 // Callback for Stage ContextLostSignal
1120 private void OnContextLost()
1122 stageContextLostEventHandler?.Invoke(this, null);
1125 // Callback for Stage ContextRegainedSignal
1126 private void OnContextRegained()
1128 stageContextRegainedEventHandler?.Invoke(this, null);
1131 // Callback for Stage SceneCreatedSignal
1132 private void OnSceneCreated()
1134 stageSceneCreatedEventHandler?.Invoke(this, null);
1137 private void OnResized(IntPtr window, IntPtr windowSize)
1139 if (window == IntPtr.Zero)
1141 NUILog.Error("OnResized() Window is null! Do nothing!");
1145 if (windowResizeEventHandler != null)
1147 ResizedEventArgs e = new ResizedEventArgs();
1148 // var val = new Uint16Pair(windowSize, false);
1149 // e.WindowSize = new Size2D(val.GetWidth(), val.GetHeight());
1152 // Workaround : windowSize should be valid pointer from dali,
1153 // but currently it is fixed and is not Uint16Pair class.
1154 // will be fixed later.
1155 e.WindowSize = this.WindowSize;
1156 windowResizeEventHandler(this, e);
1160 private void OnWindowFocusedChanged2(IntPtr window, bool focusGained)
1162 if (window == IntPtr.Zero)
1164 NUILog.Error("OnWindowFocusedChanged() Window is null! Do nothing!");
1168 if (windowFocusChangedEventHandler2 != null)
1170 FocusChangedEventArgs e = new FocusChangedEventArgs();
1171 e.FocusGained = focusGained;
1172 windowFocusChangedEventHandler2(this, e);
1176 private void OnTransitionEffect(IntPtr window, int state, int type)
1178 if (window == global::System.IntPtr.Zero)
1183 if (transitionEffectHandler != null)
1185 TransitionEffectEventArgs e = new TransitionEffectEventArgs();
1186 e.State = (EffectState)state;
1187 e.Type = (EffectType)type;
1188 transitionEffectHandler(this, e);
1193 private void OnMoved(IntPtr window, IntPtr position)
1195 if (window == global::System.IntPtr.Zero)
1200 if (movedHandler != null)
1202 WindowMovedEventArgs e = new WindowMovedEventArgs();
1203 e.WindowPosition = this.WindowPosition;
1204 movedHandler(this, e);
1209 private void OnOrientationChanged(IntPtr window, int orientation)
1211 if (window == global::System.IntPtr.Zero)
1216 if (orientationChangedHandler != null)
1218 WindowOrientationChangedEventArgs e = new WindowOrientationChangedEventArgs();
1219 e.WindowOrientation = (WindowOrientation)orientation;
1220 orientationChangedHandler(this, e);
1225 private void OnKeyboardRepeatSettingsChanged()
1227 keyboardRepeatSettingsChangedHandler?.Invoke(this, null);
1231 private void OnWindowMouseInOutEvent(IntPtr view, IntPtr mouseEvent)
1233 if (mouseEvent == global::System.IntPtr.Zero)
1235 NUILog.Error("mouseEvent should not be null!");
1239 if (windowMouseInOutEventHandler != null)
1241 MouseInOutEventArgs e = new MouseInOutEventArgs();
1242 e.MouseInOut = Tizen.NUI.MouseInOut.GetMouseInOutFromPtr(mouseEvent);
1243 windowMouseInOutEventHandler(this, e);
1247 private void OnMoveCompleted(IntPtr window, IntPtr position)
1249 if (window == global::System.IntPtr.Zero)
1254 if (moveCompletedHandler != null)
1256 WindowMoveCompletedEventArgs e = new WindowMoveCompletedEventArgs(this.WindowPosition);
1257 moveCompletedHandler(this, e);
1262 private void OnResizeCompleted(IntPtr window, IntPtr size)
1264 if (window == global::System.IntPtr.Zero)
1269 if (resizeCompletedHandler != null)
1271 WindowResizeCompletedEventArgs e = new WindowResizeCompletedEventArgs(this.WindowSize);
1272 resizeCompletedHandler(this, e);
1277 private void OnWindowMouseRelativeEvent(IntPtr view, IntPtr mouseEvent)
1279 if (mouseEvent == global::System.IntPtr.Zero)
1281 NUILog.Error("mouseEvent should not be null!");
1285 if (windowMouseRelativeEventHandler != null)
1287 MouseRelativeEventArgs e = new MouseRelativeEventArgs();
1288 e.MouseRelative = Tizen.NUI.MouseRelative.GetMouseRelativeFromPtr(mouseEvent);
1289 windowMouseRelativeEventHandler(this, e);
1293 private void OnWindowPointerConstraintsEvent(IntPtr view, IntPtr constraintsEvent)
1295 if (constraintsEvent == global::System.IntPtr.Zero)
1297 NUILog.Error("constraintsEvent should not be null!");
1301 if (windowPointerConstraintsEventHandler != null)
1303 PointerConstraintsEventArgs e = new PointerConstraintsEventArgs();
1304 e.PointerConstraints = Tizen.NUI.PointerConstraints.GetPointerConstraintsFromPtr(constraintsEvent);
1305 windowPointerConstraintsEventHandler(this, e);
1309 private bool OnWindowHover(IntPtr view, IntPtr hoverData)
1311 if (hoverData == global::System.IntPtr.Zero)
1313 NUILog.Error("hoverData should not be null!");
1317 if (rootLayerHoverDataEventHandler != null)
1319 HoverEventArgs e = new HoverEventArgs();
1320 e.Hover = Tizen.NUI.Hover.GetHoverFromPtr(hoverData);
1321 rootLayerHoverDataEventHandler(this, e);
1327 /// The focus changed event argument.
1329 /// <since_tizen> 3 </since_tizen>
1330 public class FocusChangedEventArgs : EventArgs
1333 /// FocusGained flag.
1335 /// <since_tizen> 3 </since_tizen>
1336 public bool FocusGained
1344 /// The touch event argument.
1346 /// <since_tizen> 3 </since_tizen>
1347 public class TouchEventArgs : EventArgs
1349 private Touch touch;
1354 /// <since_tizen> 3 </since_tizen>
1369 /// Wheel event arguments.
1371 /// <since_tizen> 3 </since_tizen>
1372 public class WheelEventArgs : EventArgs
1374 private Wheel wheel;
1379 /// <since_tizen> 3 </since_tizen>
1394 /// Key event arguments.
1396 /// <since_tizen> 3 </since_tizen>
1397 public class KeyEventArgs : EventArgs
1404 /// <since_tizen> 3 </since_tizen>
1419 /// Feeds a key event into the window.
1420 /// This resized event arguments.
1422 /// <since_tizen> 3 </since_tizen>
1423 public class ResizedEventArgs : EventArgs
1428 /// This window size.
1430 /// <since_tizen> 4 </since_tizen>
1431 public Size2D WindowSize
1445 /// MouseInOut evnet arguments.
1447 [EditorBrowsable(EditorBrowsableState.Never)]
1448 public class MouseInOutEventArgs : EventArgs
1450 private MouseInOut mouseEvent;
1453 /// MouseInOut event.
1455 [EditorBrowsable(EditorBrowsableState.Never)]
1456 public MouseInOut MouseInOut
1470 /// MouseRelative evnet arguments.
1472 [EditorBrowsable(EditorBrowsableState.Never)]
1473 public class MouseRelativeEventArgs : EventArgs
1475 private MouseRelative mouseEvent;
1478 /// MouseRelative event.
1480 [EditorBrowsable(EditorBrowsableState.Never)]
1481 public MouseRelative MouseRelative
1496 /// PointerConstraints evnet arguments.
1498 [EditorBrowsable(EditorBrowsableState.Never)]
1499 public class PointerConstraintsEventArgs : EventArgs
1501 private PointerConstraints constraintsEvent;
1504 /// PointerConstraints event.
1506 [EditorBrowsable(EditorBrowsableState.Never)]
1507 public PointerConstraints PointerConstraints
1511 return constraintsEvent;
1515 constraintsEvent = value;
1521 /// Event arguments that passed via the hover signal.
1523 [EditorBrowsable(EditorBrowsableState.Never)]
1524 public class HoverEventArgs : EventArgs
1526 private Hover hover;
1529 /// Hover - contains touch points that represent the points that are currently being hovered or the points where a hover has stopped.
1531 [EditorBrowsable(EditorBrowsableState.Never)]
1546 /// Do not use this, that will be deprecated.
1548 /// <since_tizen> 3 </since_tizen>
1549 [Obsolete("Do not use this, that will be deprecated. Use FocusChangedEventArgs instead. " +
1551 "NUIApplication.GetDefaultWindow().FocusChanged = OnFocusChanged; " +
1552 "private void OnFocusChanged(object source, Window.FocusChangedEventArgs args) {...}")]
1553 [EditorBrowsable(EditorBrowsableState.Never)]
1554 [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
1555 public class WindowFocusChangedEventArgs : EventArgs
1558 /// Do not use this, that will be deprecated.
1560 /// <since_tizen> 3 </since_tizen>
1561 public bool FocusGained
1569 /// Contains and encapsulates Native Window handle.
1571 /// <since_tizen> 4 </since_tizen>
1572 [Obsolete("This has been deprecated in API9 and will be removed in API11. Use Window.NativeHandle instead.")]
1573 public class SafeNativeWindowHandle : SafeHandle
1576 ///Constructor, Native window handle is set to handle.
1578 /// <since_tizen> 4 </since_tizen>
1579 public SafeNativeWindowHandle() : base(IntPtr.Zero, false)
1581 SetHandle(NUIApplication.GetDefaultWindow().GetNativeWindowHandler());
1584 /// Null check if the handle is valid or not.
1586 /// <since_tizen> 4 </since_tizen>
1587 public override bool IsInvalid
1591 return this.handle == IntPtr.Zero;
1595 /// Release handle itself.
1597 /// <returns>true when released successfully.</returns>
1598 /// <since_tizen> 4 </since_tizen>
1599 protected override bool ReleaseHandle()
1606 /// TransitionEffectArgs
1608 [EditorBrowsable(EditorBrowsableState.Never)]
1609 public class TransitionEffectEventArgs : EventArgs
1611 private EffectState state;
1612 private EffectType type;
1617 [EditorBrowsable(EditorBrowsableState.Never)]
1618 public EffectState State
1632 [EditorBrowsable(EditorBrowsableState.Never)]
1633 public EffectType Type
1646 private EventHandler<WheelEventArgs> DetentEventHandler;
1648 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
1649 private delegate void DetentEventCallbackType(IntPtr arg1);
1651 private DetentEventCallbackType DetentEventCallback;
1653 private void OnDetentEvent(IntPtr wheelEvent)
1655 WheelEventArgs e = new WheelEventArgs();
1657 if (wheelEvent != global::System.IntPtr.Zero)
1659 e.Wheel = Wheel.GetWheelFromPtr(wheelEvent);
1662 DetentEventHandler?.Invoke(this, e);
1666 /// VisibilityChangedArgs
1668 [EditorBrowsable(EditorBrowsableState.Never)]
1669 public class VisibilityChangedEventArgs : EventArgs
1671 private bool visibility;
1675 [EditorBrowsable(EditorBrowsableState.Never)]
1676 public bool Visibility
1686 private void OnVisibilityChanged(IntPtr window, bool visibility)
1688 if (window == global::System.IntPtr.Zero)
1690 NUILog.Error("[ERR] OnVisibilityChanged() window is null");
1694 VisibilityChangedEventArgs e = new VisibilityChangedEventArgs();
1695 e.Visibility = visibility;
1696 if (VisibilityChangedEventHandler != null)
1698 VisibilityChangedEventHandler.Invoke(this, e);
1702 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
1703 private delegate void VisibilityChangedEventCallbackType(IntPtr window, bool visibility);
1704 private VisibilityChangedEventCallbackType VisibilityChangedEventCallback;
1705 private event EventHandler<VisibilityChangedEventArgs> VisibilityChangedEventHandler;
1706 private WindowVisibilityChangedEvent VisibilityChangedEventSignal;
1711 [EditorBrowsable(EditorBrowsableState.Never)]
1712 public event EventHandler<VisibilityChangedEventArgs> VisibilityChanged
1716 if (VisibilityChangedEventHandler == null)
1718 VisibilityChangedEventCallback = OnVisibilityChanged;
1719 using WindowVisibilityChangedEvent signal = new WindowVisibilityChangedEvent(Interop.WindowVisibilityChangedSignal.GetSignal(Window.getCPtr(this)), false);
1720 signal.Ensure()?.Connect(VisibilityChangedEventCallback);
1722 VisibilityChangedEventHandler += value;
1726 VisibilityChangedEventHandler -= value;
1727 if (VisibilityChangedEventHandler == null && VisibilityChangedEventCallback != null)
1729 using WindowVisibilityChangedEvent signal = new WindowVisibilityChangedEvent(Interop.WindowVisibilityChangedSignal.GetSignal(Window.getCPtr(this)), false);
1730 signal.Ensure()?.Disconnect(VisibilityChangedEventCallback);
1731 VisibilityChangedEventCallback = null;
1737 /// VisibiltyChangedSignalEmit
1739 [EditorBrowsable(EditorBrowsableState.Never)]
1740 public void VisibiltyChangedSignalEmit(bool visibility)
1742 if (VisibilityChangedEventSignal == null)
1744 VisibilityChangedEventSignal = new WindowVisibilityChangedEvent(this);
1746 VisibilityChangedEventSignal.Emit(this, visibility);
1749 private void OnAuxiliaryMessage(IntPtr kData, IntPtr vData, IntPtr optionsArray)
1751 if (kData == IntPtr.Zero || vData == IntPtr.Zero)
1756 using var tmp = new PropertyArray(optionsArray, false);
1757 var size = tmp.Size();
1759 List<string> tmpList = new List<string>();
1761 for (int i = 0; i < size; i++)
1763 string option = "none";
1764 tmp.GetElementAt((uint)i).Get(out option);
1765 tmpList.Add(option);
1770 AuxiliaryMessageEventArgs e = new AuxiliaryMessageEventArgs();
1771 e.Key = StringToVoidSignal.GetResult(kData);
1772 e.Value = StringToVoidSignal.GetResult(vData); ;
1773 e.Options = tmpList;
1775 auxiliaryMessageEventHandler?.Invoke(this, e);
1779 /// Auxiliary message is sent by displayer server when window's auxiliary was changed then display server sent the message.
1780 /// When client application added the window's auxiliary hint and if the auxiliary is changed,
1781 /// display server send the auxiliary message.
1782 /// Auxiliary message has the key, value and options.
1784 [EditorBrowsable(EditorBrowsableState.Never)]
1785 public event EventHandler<AuxiliaryMessageEventArgs> AuxiliaryMessage
1789 if (auxiliaryMessageEventHandler == null)
1791 auxiliaryMessageEventCallback = OnAuxiliaryMessage;
1792 using WindowAuxiliaryMessageSignal signal = new WindowAuxiliaryMessageSignal(Interop.WindowAuxiliaryMessageSignalType.Get(SwigCPtr), false);
1793 signal.Ensure()?.Connect(auxiliaryMessageEventCallback);
1795 auxiliaryMessageEventHandler += value;
1799 auxiliaryMessageEventHandler -= value;
1800 if (auxiliaryMessageEventHandler == null && auxiliaryMessageEventCallback != null)
1802 using WindowAuxiliaryMessageSignal signal = new WindowAuxiliaryMessageSignal(Interop.WindowAuxiliaryMessageSignalType.Get(SwigCPtr), false);
1803 signal.Ensure()?.Disconnect(auxiliaryMessageEventCallback);
1804 auxiliaryMessageEventCallback = null;
1810 /// The type of insets part.
1812 [EditorBrowsable(EditorBrowsableState.Never)]
1813 public enum InsetsPartType
1821 /// The state of insets part.
1823 [EditorBrowsable(EditorBrowsableState.Never)]
1824 public enum InsetsPartState
1831 /// InsetsChangedEventArgs
1833 [EditorBrowsable(EditorBrowsableState.Never)]
1834 public class InsetsChangedEventArgs : EventArgs
1836 private InsetsPartType partType;
1837 private InsetsPartState partState;
1838 private Extents insets;
1841 /// The type of insets part.
1842 /// e.g. StatusBar, Keyboard, or Clipboard
1844 [EditorBrowsable(EditorBrowsableState.Never)]
1845 public InsetsPartType PartType
1855 /// The state of insets part.
1856 /// e.g. Invisible or Visible
1858 [EditorBrowsable(EditorBrowsableState.Never)]
1859 public InsetsPartState PartState
1869 /// The extents value of window insets
1871 [EditorBrowsable(EditorBrowsableState.Never)]
1872 public Extents Insets
1882 private void OnInsetsChanged(int partType, int partState, IntPtr extents)
1884 if (insetsChangedEventHandler != null)
1886 InsetsChangedEventArgs e = new InsetsChangedEventArgs();
1887 e.PartType = (InsetsPartType)partType;
1888 e.PartState = (InsetsPartState)partState;
1889 e.Insets = new Extents(extents, false);
1891 insetsChangedEventHandler.Invoke(this, e);
1896 /// Emits the event when the window insets changes by status bar, virtual keyboard, or clipboard appears and disappears.
1898 [EditorBrowsable(EditorBrowsableState.Never)]
1899 public event EventHandler<InsetsChangedEventArgs> InsetsChanged
1903 if (insetsChangedEventHandler == null)
1905 insetsChangedEventCallback = OnInsetsChanged;
1906 using WindowInsetsChangedSignal signal = new WindowInsetsChangedSignal(Interop.WindowInsetsChangedSignalType.Get(SwigCPtr), false);
1907 signal.Ensure()?.Connect(insetsChangedEventCallback);
1909 insetsChangedEventHandler += value;
1913 insetsChangedEventHandler -= value;
1914 if (insetsChangedEventHandler == null && insetsChangedEventCallback != null)
1916 using WindowInsetsChangedSignal signal = new WindowInsetsChangedSignal(Interop.WindowInsetsChangedSignalType.Get(SwigCPtr), false);
1917 signal.Ensure()?.Disconnect(insetsChangedEventCallback);
1918 insetsChangedEventCallback = null;
1924 /// AccessibilityHighlightArgs
1926 [EditorBrowsable(EditorBrowsableState.Never)]
1927 public class AccessibilityHighlightEventArgs : EventArgs
1929 private bool accessibilityHighlight;
1931 /// accessibilityHighlight
1933 [EditorBrowsable(EditorBrowsableState.Never)]
1934 public bool AccessibilityHighlight
1936 get => accessibilityHighlight;
1939 accessibilityHighlight = value;
1944 private void OnAccessibilityHighlight(IntPtr window, bool highlight)
1946 if (window == global::System.IntPtr.Zero)
1948 NUILog.Error("[ERR] OnAccessibilityHighlight() window is null");
1952 AccessibilityHighlightEventArgs e = new AccessibilityHighlightEventArgs();
1953 e.AccessibilityHighlight = highlight;
1954 if (AccessibilityHighlightEventHandler != null)
1956 AccessibilityHighlightEventHandler.Invoke(this, e);
1960 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
1961 private delegate void AccessibilityHighlightEventCallbackType(IntPtr window, bool highlight);
1962 private AccessibilityHighlightEventCallbackType AccessibilityHighlightEventCallback;
1963 private event EventHandler<AccessibilityHighlightEventArgs> AccessibilityHighlightEventHandler;
1966 /// Emits the event when the window needs to grab or clear highlight.
1968 [EditorBrowsable(EditorBrowsableState.Never)]
1969 public event EventHandler<AccessibilityHighlightEventArgs> AccessibilityHighlight
1973 if (AccessibilityHighlightEventHandler == null)
1975 AccessibilityHighlightEventCallback = OnAccessibilityHighlight;
1976 using WindowAccessibilityHighlightEvent signal = new WindowAccessibilityHighlightEvent(Interop.WindowAccessibilityHighlightSignal.GetSignal(SwigCPtr), false);
1977 signal.Ensure()?.Connect(AccessibilityHighlightEventCallback);
1979 AccessibilityHighlightEventHandler += value;
1983 AccessibilityHighlightEventHandler -= value;
1984 if (AccessibilityHighlightEventHandler == null && AccessibilityHighlightEventCallback != null)
1986 using WindowAccessibilityHighlightEvent signal = new WindowAccessibilityHighlightEvent(Interop.WindowAccessibilityHighlightSignal.GetSignal(SwigCPtr), false);
1987 signal.Ensure()?.Disconnect(AccessibilityHighlightEventCallback);
1988 AccessibilityHighlightEventCallback = null;
1995 /// Move event is sent when window is resized by user or the display server.
1997 [EditorBrowsable(EditorBrowsableState.Never)]
1998 public class WindowMovedEventArgs : EventArgs
2000 private Position2D position;
2002 [EditorBrowsable(EditorBrowsableState.Never)]
2003 public Position2D WindowPosition
2017 /// OrientationChangedArgs
2019 [EditorBrowsable(EditorBrowsableState.Never)]
2020 public class WindowOrientationChangedEventArgs : EventArgs
2022 private Window.WindowOrientation orientation;
2024 [EditorBrowsable(EditorBrowsableState.Never)]
2025 public Window.WindowOrientation WindowOrientation
2033 orientation = value;
2039 /// Move Completed event is sent when window has been moved the display server.
2040 /// It is triggered by calling RequestMoveToServer().
2042 [EditorBrowsable(EditorBrowsableState.Never)]
2043 public class WindowMoveCompletedEventArgs : EventArgs
2045 public WindowMoveCompletedEventArgs(Position2D completedPosition)
2047 WindowCompletedPosition = completedPosition;
2050 public Position2D WindowCompletedPosition
2058 /// Resize Completed event is sent when window has been resized the display server.
2059 /// It is triggered by calling RequestResizeToServer().
2061 [EditorBrowsable(EditorBrowsableState.Never)]
2062 public class WindowResizeCompletedEventArgs : EventArgs
2064 public WindowResizeCompletedEventArgs(Size2D completedSize)
2066 WindowCompletedSize = completedSize;
2069 public Size2D WindowCompletedSize