/*
- * Copyright(c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright(c) 2024 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
protected override bool ReleaseHandle()
{
- if (!IsInvalid)
+ if (IsInvalid)
{
- DisposeQueue.Instance.Add(this);
+ return true;
}
+
+ Interop.View.DeleteControlHandleView(handle);
+ this.SetHandle(IntPtr.Zero);
return true;
}
protected override void Dispose(bool disposing)
{
- if (IsInvalid)
- {
- return;
- }
-
if (disposing)
{
- Interop.View.DeleteControlHandleView(handle);
- this.SetHandle(IntPtr.Zero);
+ base.Dispose(true);
}
else
{
+ Tizen.Log.Error("NUI", "Warning! ControlHandle is disposed by Unmanaged code. Don't forget to add 'using' keyword before use ControlHandle\n");
DisposeQueue.Instance.Add(this);
}
}
/// <summary>
/// Gets the control handle.
/// </summary>
+ /// <remarks>
+ /// We don't allow to keep ControlHandle in managed code.
+ /// Don't forget to call Dispose() after using it.
+ /// </remarks>
/// <returns>The control handle of the view</returns>
- [EditorBrowsable(EditorBrowsableState.Never)]
- ControlHandle GetControl()
+ internal ControlHandle GetControl()
{
- var result = new ControlHandle(Interop.View.DownCast(SwigCPtr));
+ var result = new ControlHandle(Interop.BaseHandle.NewBaseHandle(SwigCPtr));
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return result;
}
internal AccessibilityDoGestureSignal AccessibilityGestureInfoSignal()
{
- var handle = GetControl();
+ using var handle = GetControl();
AccessibilityDoGestureSignal ret = new AccessibilityDoGestureSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityDoGestureSignal(handle), false);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
internal StringToVoidSignal GetAccessibilityDescriptionSignal()
{
- var handle = GetControl();
+ using var handle = GetControl();
StringToVoidSignal ret = new StringToVoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityGetDescriptionSignal(handle), false);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
internal StringToVoidSignal GetAccessibilityNameSignal()
{
- var handle = GetControl();
+ using var handle = GetControl();
StringToVoidSignal ret = new StringToVoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityGetNameSignal(handle), false);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
internal VoidSignal AccessibilityActivatedSignal()
{
- var handle = GetControl();
+ using var handle = GetControl();
VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityActivateSignal(handle), false);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
internal VoidSignal AccessibilityReadingSkippedSignal()
{
- var handle = GetControl();
+ using var handle = GetControl();
VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingSkippedSignal(handle), false);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
internal VoidSignal AccessibilityReadingPausedSignal()
{
- var handle = GetControl();
+ using var handle = GetControl();
VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingPausedSignal(handle), false);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
internal VoidSignal AccessibilityReadingResumedSignal()
{
- var handle = GetControl();
+ using var handle = GetControl();
VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingResumedSignal(handle), false);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
internal VoidSignal AccessibilityReadingCancelledSignal()
{
- var handle = GetControl();
+ using var handle = GetControl();
VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingCancelledSignal(handle), false);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
internal VoidSignal AccessibilityReadingStoppedSignal()
{
- var handle = GetControl();
+ using var handle = GetControl();
VoidSignal ret = new VoidSignal(Interop.ControlDevel.DaliToolkitDevelControlAccessibilityReadingStoppedSignal(handle), false);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;