Revert "[Tizen] Fix unParent Bug"
[platform/core/uifw/dali-adaptor.git] / dali / internal / window-system / ubuntu-x11 / window-base-ecore-x.cpp
index be17bdf..a000b74 100755 (executable)
@@ -898,14 +898,25 @@ void WindowBaseEcoreX::CreateWindow( PositionSize positionSize, bool isTranspare
  }
 }
 
-void WindowBaseEcoreX::SetParent( WindowBase* parentWinBase )
+void WindowBaseEcoreX::SetParent( Any parent )
 {
-  Ecore_X_Window ecoreParent = 0;
-  if( parentWinBase )
+  Ecore_X_Window mEcoreParent;
+  if ( parent.Empty() == false )
   {
-    WindowBaseEcoreX* winBaseEcoreX = static_cast<WindowBaseEcoreX*>( parentWinBase );
-    ecoreParent = winBaseEcoreX->mEcoreWindow;
-    ecore_x_icccm_transient_for_set( mEcoreWindow, ecoreParent );
+    // check we have a valid type
+    DALI_ASSERT_ALWAYS( ( (parent.GetType() == typeid (Ecore_X_Window) ) )
+                        && "Surface type is invalid" );
+
+    if ( parent.GetType() == typeid (Ecore_X_Window) )
+    {
+      mEcoreParent = AnyCast< Ecore_X_Window >( parent );
+      ecore_x_icccm_transient_for_set( mEcoreWindow, mEcoreParent );
+    }
+    else
+    {
+      mEcoreParent = 0;
+      ecore_x_icccm_transient_for_unset( mEcoreWindow );
+    }
   }
   else
   {
@@ -914,6 +925,21 @@ void WindowBaseEcoreX::SetParent( WindowBase* parentWinBase )
   }
 }
 
+bool WindowBaseEcoreX::IsMatchedWindow( Any window )
+{
+  bool ret = false;
+  if ( window.Empty() == false )
+  {
+    // check we have a valid type
+    DALI_ASSERT_ALWAYS( ( (window.GetType() == typeid (Ecore_X_Window) ) ) && "Surface type is invalid" );
+    if ( AnyCast< Ecore_X_Window >( window ) == mEcoreWindow )
+    {
+      ret = true;
+    }
+  }
+  return ret;
+}
+
 } // namespace Adaptor
 
 } // namespace Internal