(WebView) Let WebView use inherited visibility changed signal 64/316564/1
authorEunki, Hong <eunkiki.hong@samsung.com>
Fri, 23 Aug 2024 01:58:23 +0000 (10:58 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Fri, 23 Aug 2024 01:58:23 +0000 (10:58 +0900)
Change-Id: I2bb290e242126739c4bccb7b0624b6c4cbe04e1a
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali-toolkit/internal/controls/web-view/web-view-impl.cpp
dali-toolkit/internal/controls/web-view/web-view-impl.h

index a0deca51627df17f5e18d0d38d28c27c8e0c1d92..a2b4960e39e78849881a38421e835967802bdd86 100644 (file)
@@ -283,9 +283,7 @@ void WebView::OnInitialize()
   self.TouchedSignal().Connect(this, &WebView::OnTouchEvent);
   self.HoveredSignal().Connect(this, &WebView::OnHoverEvent);
   self.WheelEventSignal().Connect(this, &WebView::OnWheelEvent);
-  Dali::DevelActor::VisibilityChangedSignal(self).Connect(this, &WebView::OnVisibilityChanged);
-
-  mWebViewVisibleState |= WebViewVisibleStateFlag::SELF_SHOW;
+  self.InheritedVisibilityChangedSignal().Connect(this, &WebView::OnInheritedVisibilityChanged);
 
   mPositionUpdateNotification = self.AddPropertyNotification(Actor::Property::WORLD_POSITION, StepCondition(1.0f, 1.0f));
   mSizeUpdateNotification     = self.AddPropertyNotification(Actor::Property::SIZE, StepCondition(1.0f, 1.0f));
@@ -887,45 +885,9 @@ void WebView::OnDisplayAreaUpdated(Dali::PropertyNotification& /*source*/)
   SetDisplayArea(displayArea);
 }
 
-void WebView::OnVisibilityChanged(Actor actor, bool isVisible, Dali::DevelActor::VisibilityChange::Type type)
-{
-  if(type == Dali::DevelActor::VisibilityChange::Type::SELF)
-  {
-    if(isVisible)
-    {
-      mWebViewVisibleState |= WebViewVisibleStateFlag::SELF_SHOW;
-    }
-    else
-    {
-      mWebViewVisibleState &= ~WebViewVisibleStateFlag::SELF_SHOW;
-    }
-  }
-  else if(type == Dali::DevelActor::VisibilityChange::Type::PARENT)
-  {
-    if(isVisible)
-    {
-      mWebViewVisibleState |= WebViewVisibleStateFlag::PARENT_SHOW;
-      // TODO : We should consider double-hide called from parent
-    }
-    else
-    {
-      mWebViewVisibleState &= ~WebViewVisibleStateFlag::PARENT_SHOW;
-    }
-  }
-  ApplyVisibilityCheck();
-}
-
-void WebView::OnWindowVisibilityChanged(Window window, bool visible)
+void WebView::OnInheritedVisibilityChanged(Actor actor, bool isVisible)
 {
-  if(visible)
-  {
-    mWebViewVisibleState |= WebViewVisibleStateFlag::WINDOW_SHOW;
-  }
-  else
-  {
-    mWebViewVisibleState &= ~WebViewVisibleStateFlag::WINDOW_SHOW;
-  }
-  ApplyVisibilityCheck();
+  SetVisibility(isVisible);
 }
 
 void WebView::OnScreenshotCaptured(Dali::PixelData pixel)
@@ -964,41 +926,12 @@ void WebView::SetDisplayArea(const Dali::Rect<int32_t>& displayArea)
 
 void WebView::OnSceneConnection(int depth)
 {
-  mWebViewVisibleState |= WebViewVisibleStateFlag::SCENE_ON;
-  mWebViewVisibleState |= WebViewVisibleStateFlag::PARENT_SHOW;
-  // TODO : We should consider already hided parent
-  Window window = DevelWindow::Get(Self());
-  if(window)
-  {
-    // Hold the weak handle of the placement window.
-    mPlacementWindow = window;
-    if(window.IsVisible())
-    {
-      mWebViewVisibleState |= WebViewVisibleStateFlag::WINDOW_SHOW;
-    }
-    else
-    {
-      mWebViewVisibleState &= ~WebViewVisibleStateFlag::WINDOW_SHOW;
-    }
-    DevelWindow::VisibilityChangedSignal(window).Connect(this, &WebView::OnWindowVisibilityChanged);
-  }
-  ApplyVisibilityCheck();
   Control::OnSceneConnection(depth);
   EnableBlendMode(!mVideoHoleEnabled);
 }
 
 void WebView::OnSceneDisconnection()
 {
-  mWebViewVisibleState &= ~WebViewVisibleStateFlag::SCENE_ON;
-  mWebViewVisibleState &= ~WebViewVisibleStateFlag::WINDOW_SHOW;
-  mWebViewVisibleState &= ~WebViewVisibleStateFlag::PARENT_SHOW;
-  Window window = mPlacementWindow.GetHandle();
-  if(window)
-  {
-    DevelWindow::VisibilityChangedSignal(window).Disconnect(this, &WebView::OnWindowVisibilityChanged);
-    mPlacementWindow.Reset();
-  }
-  ApplyVisibilityCheck();
   Control::OnSceneDisconnection();
 }
 
@@ -1420,11 +1353,6 @@ bool WebView::SetVisibility(bool visible)
   return mWebEngine ? mWebEngine.SetVisibility(visible) : false;
 }
 
-void WebView::ApplyVisibilityCheck()
-{
-  SetVisibility(mWebViewVisibleState == WebViewVisibleStateFlag::VISIBLE);
-}
-
 WebView::WebViewAccessible::WebViewAccessible(Dali::Actor self, Dali::WebEngine& webEngine)
 : ControlAccessible(self),
   mRemoteChild{},
index 6415a8b26cd266262a6b0053955d0f8e73676cdd..0b6c9acfbbab9ad54fa8bf3942c4e830a692439e 100644 (file)
@@ -676,18 +676,10 @@ private:
 
   /**
    * @brief Callback function to be called when visibility is changed.
-   * @param[in] actor The actor, or child of actor, whose visibility has changed
+   * @param[in] actor The actor, whose inherit visibility has changed
    * @param[in] isVisible Whether the actor is now visible or not
-   * @param[in] type, Whether the actor's visible property has changed or a parent's
    */
-  void OnVisibilityChanged(Actor actor, bool isVisible, Dali::DevelActor::VisibilityChange::Type type);
-
-  /**
-   * @brief Callback when the visibility of the window is changed.
-   * @param[in] window The window whose visibility has changed
-   * @param[in] visible Whether the window is now visible or not
-   */
-  void OnWindowVisibilityChanged(Window window, bool visible);
+  void OnInheritedVisibilityChanged(Actor actor, bool isVisible);
 
   /**
    * @brief callback for screen shot captured.
@@ -703,11 +695,6 @@ private:
    */
   void SetDisplayArea(const Dali::Rect<int32_t>& displayArea);
 
-  /**
-   * @brief Apply self visibility state and send visibility chagend to web engine.
-   */
-  void ApplyVisibilityCheck();
-
 protected:
   class WebViewAccessible : public DevelControl::ControlAccessible
   {
@@ -744,19 +731,6 @@ private:
   uint32_t mLastRenderedNativeImageWidth;
   uint32_t mLastRenderedNativeImageHeight;
 
-  enum WebViewVisibleStateFlag
-  {
-    NONE        = 0,
-    SCENE_ON    = 1 << 0,
-    WINDOW_SHOW = 1 << 1,
-    SELF_SHOW   = 1 << 2,
-    PARENT_SHOW = 1 << 3,
-
-    VISIBLE = SCENE_ON | WINDOW_SHOW | SELF_SHOW | PARENT_SHOW,
-  };
-  uint32_t           mWebViewVisibleState{WebViewVisibleStateFlag::NONE}; /// Flag of web view visible.
-  WeakHandle<Window> mPlacementWindow;
-
   std::unique_ptr<Dali::Toolkit::WebSettings>        mWebSettings;
   std::unique_ptr<Dali::Toolkit::WebBackForwardList> mWebBackForwardList;