[Tizen] Fix unParent Bug
authorSeoyeon Kim <seoyeon2.kim@samsung.com>
Tue, 8 Oct 2019 05:27:22 +0000 (14:27 +0900)
committerSeoyeon Kim <seoyeon2.kim@samsung.com>
Tue, 8 Oct 2019 05:27:25 +0000 (14:27 +0900)
This reverts commit 70189749d12fc175c530b8d852386e1c13088fbd.

dali/internal/window-system/common/window-base.h
dali/internal/window-system/common/window-impl.cpp
dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.cpp
dali/internal/window-system/tizen-wayland/ecore-wl/window-base-ecore-wl.h
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.h
dali/internal/window-system/ubuntu-x11/window-base-ecore-x.cpp
dali/internal/window-system/ubuntu-x11/window-base-ecore-x.h
dali/internal/window-system/windows/window-base-win.cpp
dali/internal/window-system/windows/window-base-win.h

index a9e340f..2246d6c 100644 (file)
@@ -342,13 +342,7 @@ public:
   /**
    * @copydoc Dali::Window::SetParent()
    */
-  virtual void SetParent( Any parent ) = 0;
-
-  /**
-   * @brief Check whether the window is matched or not.
-   * @return The result of matched.
-   */
-  virtual bool IsMatchedWindow( Any window ) = 0;
+  virtual void SetParent( WindowBase* parentWinBase ) = 0;
 
   // Signals
 
index fdb01bd..d5f8383 100644 (file)
@@ -731,20 +731,20 @@ void Window::SetParent( Dali::Window& parent )
   if ( DALI_UNLIKELY( parent ) )
   {
     mParentWindow = parent;
-    Dali::Window grandParent = Dali::DevelWindow::GetParent( parent );
+    Dali::Window self = Dali::Window( this );
     // check circular parent window setting
-    if ( DALI_UNLIKELY( grandParent ) && mWindowBase->IsMatchedWindow( grandParent.GetNativeHandle() ) )
+    if ( Dali::DevelWindow::GetParent( parent ) == self )
     {
       Dali::DevelWindow::Unparent( parent );
     }
-    mWindowBase->SetParent( parent.GetNativeHandle() );
+    mWindowBase->SetParent( GetImplementation( mParentWindow ).mWindowBase );
   }
 }
 
 void Window::Unparent()
 {
-  Any parent;
-  mWindowBase->SetParent( parent );
+  mWindowBase->SetParent( nullptr );
+  mParentWindow.Reset();
 }
 
 Dali::Window Window::GetParent()
index 0eecbcc..5495b17 100644 (file)
@@ -2153,35 +2153,15 @@ void WindowBaseEcoreWl::CreateWindow( PositionSize positionSize )
   }
 }
 
-void WindowBaseEcoreWl::SetParent( Any parent )
+void WindowBaseEcoreWl::SetParent( WindowBase* parentWinBase )
 {
-  Ecore_Wl_Window* mEcoreParent;
-  if( parent.Empty() == false )
+  Ecore_Wl_Window* ecoreParent = NULL;
+  if( parentWinBase )
   {
-    // check we have a valid type
-    DALI_ASSERT_ALWAYS( ( parent.GetType() == typeid (Ecore_Wl_Window *) ) && "Parent's surface type is invalid" );
-    mEcoreParent = AnyCast< Ecore_Wl_Window* >( parent );
-  }
-  else
-  {
-    mEcoreParent = NULL;
-  }
-  ecore_wl_window_parent_set( mEcoreWindow, mEcoreParent );
-}
-
-bool WindowBaseEcoreWl::IsMatchedWindow( Any window )
-{
-  bool ret = false;
-  if ( window.Empty() == false )
-  {
-    // check we have a valid type
-    DALI_ASSERT_ALWAYS( ( window.GetType() == typeid (Ecore_Wl_Window *) ) && "Window's surface type is invalid" );
-    if ( AnyCast< Ecore_Wl_Window* >( window ) == mEcoreWindow )
-    {
-      ret = true;
-    }
+    WindowBaseEcoreWl* winBaseEcore = static_cast<WindowBaseEcoreWl*>( parentWinBase );
+    ecoreParent = winBaseEcore->mEcoreWindow;
   }
-  return ret;
+  ecore_wl_window_parent_set( mEcoreWindow, ecoreParent );
 }
 
 } // namespace Adaptor
index 6965904..de04a33 100644 (file)
@@ -428,12 +428,7 @@ public:
   /**
    * @copydoc Dali::Internal::Adaptor::WindowBase::SetParent()
    */
-  virtual void SetParent( Any parent ) override;
-
-  /**
-   * @copydoc Dali::Internal::Adaptor::WindowBase::IsMatchedWindow()
-   */
-  virtual bool IsMatchedWindow( Any window ) override;
+  virtual void SetParent( WindowBase* parentWinBase ) override;
 
 private:
 
index 1c6a63b..1eee7a8 100755 (executable)
@@ -2207,35 +2207,15 @@ void WindowBaseEcoreWl2::CreateWindow( PositionSize positionSize )
   ecore_wl2_window_type_set( mEcoreWindow, ECORE_WL2_WINDOW_TYPE_TOPLEVEL );
 }
 
-void WindowBaseEcoreWl2::SetParent( Any parent )
+void WindowBaseEcoreWl2::SetParent( WindowBase* parentWinBase )
 {
-  Ecore_Wl2_Window* mEcoreParent;
-  if( parent.Empty() == false )
+  Ecore_Wl2_Window* ecoreParent = NULL;
+  if( parentWinBase )
   {
-    // check we have a valid type
-    DALI_ASSERT_ALWAYS( ( parent.GetType() == typeid (Ecore_Wl2_Window *) ) && "Parent's surface type is invalid" );
-    mEcoreParent = AnyCast< Ecore_Wl2_Window* >( parent );
-  }
-  else
-  {
-    mEcoreParent = NULL;
-  }
-  ecore_wl2_window_parent_set( mEcoreWindow, mEcoreParent );
-}
-
-bool WindowBaseEcoreWl2::IsMatchedWindow( Any window )
-{
-  bool ret = false;
-  if ( window.Empty() == false )
-  {
-    // check we have a valid type
-    DALI_ASSERT_ALWAYS( ( window.GetType() == typeid (Ecore_Wl2_Window *) ) && "Window's surface type is invalid" );
-    if ( AnyCast< Ecore_Wl2_Window*>( window ) == mEcoreWindow )
-    {
-      ret = true;
-    }
+    WindowBaseEcoreWl2* winBaseEcore2 = static_cast<WindowBaseEcoreWl2*>( parentWinBase );
+    ecoreParent = winBaseEcore2->mEcoreWindow;
   }
-  return ret;
+  ecore_wl2_window_parent_set( mEcoreWindow, ecoreParent );
 }
 
 } // namespace Adaptor
index 3d2186f..a9edd4e 100644 (file)
@@ -433,12 +433,7 @@ public:
   /**
    * @copydoc Dali::Internal::Adaptor::WindowBase::SetParent()
    */
-  virtual void SetParent( Any parent ) override;
-
-  /**
-   * @copydoc Dali::Internal::Adaptor::WindowBase::IsMatchedWindow()
-   */
-  virtual bool IsMatchedWindow( Any window ) override;
+  virtual void SetParent( WindowBase* parentWinBase ) override;
 
 private:
 
index a000b74..be17bdf 100755 (executable)
@@ -898,25 +898,14 @@ void WindowBaseEcoreX::CreateWindow( PositionSize positionSize, bool isTranspare
  }
 }
 
-void WindowBaseEcoreX::SetParent( Any parent )
+void WindowBaseEcoreX::SetParent( WindowBase* parentWinBase )
 {
-  Ecore_X_Window mEcoreParent;
-  if ( parent.Empty() == false )
+  Ecore_X_Window ecoreParent = 0;
+  if( parentWinBase )
   {
-    // 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 );
-    }
+    WindowBaseEcoreX* winBaseEcoreX = static_cast<WindowBaseEcoreX*>( parentWinBase );
+    ecoreParent = winBaseEcoreX->mEcoreWindow;
+    ecore_x_icccm_transient_for_set( mEcoreWindow, ecoreParent );
   }
   else
   {
@@ -925,21 +914,6 @@ void WindowBaseEcoreX::SetParent( Any parent )
   }
 }
 
-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
index f6618e7..2d3346f 100644 (file)
@@ -362,12 +362,7 @@ public:
   /**
    * @copydoc Dali::Internal::Adaptor::WindowBase::SetParent()
    */
-  virtual void SetParent( Any parent ) override;
-
-  /**
-   * @copydoc Dali::Internal::Adaptor::WindowBase::IsMatchedWindow()
-   */
-  virtual bool IsMatchedWindow( Any window ) override;
+  virtual void SetParent( WindowBase* parentWinBase ) override;
 
 private:
 
index 7efa8b3..f7b4e6d 100755 (executable)
@@ -560,16 +560,11 @@ void WindowBaseWin::EventEntry( TWinEventInfo *event )
   }
 }
 
-void WindowBaseWin::SetParent( Any parent )
+void WindowBaseWin::SetParent( WindowBase* parentWinBase )
 {
 
 }
 
-bool WindowBaseWin::IsMatchedWindow( Any window )
-{
-  return false;
-}
-
 } // namespace Adaptor
 
 } // namespace Internal
index ea08334..9fdd599 100755 (executable)
@@ -350,12 +350,7 @@ public:
   /**
    * @copydoc Dali::Internal::Adaptor::WindowBase::SetParent()
    */
-  virtual void SetParent( Any parent ) override;
-
-  /**
-   * @copydoc Dali::Internal::Adaptor::WindowBase::IsMatchedWindow()
-   */
-  virtual bool IsMatchedWindow( Any window ) override;
+  virtual void SetParent( WindowBase* parentWinBase ) override;
 
 private: