Merge "Garbage Collection using Dispose Queue method" into devel/master
[platform/core/uifw/dali-toolkit.git] / plugins / dali-swig / manual / csharp / KeyboardFocusManager.cs
index 59241fb..4051b36 100644 (file)
@@ -1,3 +1,20 @@
+/*
+ * Copyright (c) 2016 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
 namespace Dali {
 
 using System;
@@ -15,10 +32,15 @@ public class KeyboardFocusManager : BaseHandle {
   }
 
   ~KeyboardFocusManager() {
-    Dispose();
+    DisposeQueue.Instance.Add(this);
   }
 
   public override void Dispose() {
+    if (!Stage.IsInstalled()) {
+      DisposeQueue.Instance.Add(this);
+      return;
+    }
+
     lock(this) {
       if (swigCPtr.Handle != global::System.IntPtr.Zero) {
         if (swigCMemOwn) {
@@ -150,7 +172,7 @@ public class PreFocusChangeEventArgs : EventArgs
 {
    private Actor _current;
    private Actor _proposed;
-   private Control.KeyboardFocus.Direction _direction;
+   private View.KeyboardFocus.Direction _direction;
 
    /**
     * @brief Actor - is the current focused Actor.
@@ -188,7 +210,7 @@ public class PreFocusChangeEventArgs : EventArgs
     * @brief Direction - is the direction of Focus change.
     *
     */
-    public Control.KeyboardFocus.Direction Direction
+    public View.KeyboardFocus.Direction Direction
     {
         get
         {
@@ -214,7 +236,7 @@ public class PreFocusChangeEventArgs : EventArgs
   public delegate Actor PreFocusChangeEventHandler(object source, PreFocusChangeEventArgs e);
 
   [UnmanagedFunctionPointer(CallingConvention.StdCall)]
-  public delegate IntPtr PreFocusChangeEventCallbackDelegate(IntPtr current, IntPtr proposed, Control.KeyboardFocus.Direction direction);
+  public delegate IntPtr PreFocusChangeEventCallbackDelegate(IntPtr current, IntPtr proposed, View.KeyboardFocus.Direction direction);
   private PreFocusChangeEventHandler _keyboardFocusManagerPreFocusChangeEventHandler;
   private PreFocusChangeEventCallbackDelegate _keyboardFocusManagerPreFocusChangeEventCallbackDelegate;
 
@@ -265,7 +287,7 @@ public class PreFocusChangeEventArgs : EventArgs
   }
 
   // Callback for KeyboardFocusManager PreFocusChangeSignal
-  private IntPtr OnPreFocusChange(IntPtr current, IntPtr proposed, Control.KeyboardFocus.Direction direction)
+  private IntPtr OnPreFocusChange(IntPtr current, IntPtr proposed, View.KeyboardFocus.Direction direction)
   {
       Actor actor = null;
       PreFocusChangeEventArgs e = new PreFocusChangeEventArgs();
@@ -461,7 +483,7 @@ public class PreFocusChangeEventArgs : EventArgs
     return ret;
   }
 
-  public bool MoveFocus(Control.KeyboardFocus.Direction direction) {
+  public bool MoveFocus(View.KeyboardFocus.Direction direction) {
     bool ret = NDalicManualPINVOKE.KeyboardFocusManager_MoveFocus(swigCPtr, (int)direction);
     if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
     return ret;