diff --git a/frameworks/core/components/web/resource/web_delegate.cpp b/frameworks/core/components/web/resource/web_delegate.cpp index 4f65e87e4fd13794b8b143701472c750297b5ada..c149c859036571ac50c806f657bd5caf3f251028 100644 --- a/frameworks/core/components/web/resource/web_delegate.cpp +++ b/frameworks/core/components/web/resource/web_delegate.cpp @@ -6040,6 +6040,9 @@ void WebDelegate::OnResourceLoad(const std::string& url) void WebDelegate::OnScaleChange(float oldScaleFactor, float newScaleFactor) { CHECK_NULL_VOID(taskExecutor_); + if (oldScaleFactor != newScaleFactor) { + SetViewportScaleState(); + } taskExecutor_->PostTask( [weak = WeakClaim(this), oldScaleFactor, newScaleFactor]() { auto delegate = weak.Upgrade(); @@ -8532,4 +8535,10 @@ void WebDelegate::SetBorderRadiusFromWeb(double borderRadiusTopLeft, double bord borderRadiusTopLeft, borderRadiusTopRight, borderRadiusBottomLeft, borderRadiusBottomRight); } +void WebDelegate::SetViewportScaleState() +{ + CHECK_NULL_VOID(nweb_); + nweb_->SetViewportScaleState(); +} + } // namespace OHOS::Ace diff --git a/frameworks/core/components/web/resource/web_delegate.h b/frameworks/core/components/web/resource/web_delegate.h index 46c704d301ac60d91927490e21cf71c968ccb869..b400d2b588ad536b209dec2946e4bb83f64f565e 100644 --- a/frameworks/core/components/web/resource/web_delegate.h +++ b/frameworks/core/components/web/resource/web_delegate.h @@ -1258,6 +1258,8 @@ public: void SetBorderRadiusFromWeb(double borderRadiusTopLeft, double borderRadiusTopRight, double borderRadiusBottomLeft, double borderRadiusBottomRight); + void SetViewportScaleState(); + private: void InitWebEvent(); void RegisterWebEvent();