From ccd674a069764d9bee9fa6920199426198d4c3f9 Mon Sep 17 00:00:00 2001 From: ia_oi Date: Fri, 3 Jan 2025 11:48:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=90iframe=E5=A4=9A=E8=BF=9B=E7=A8=8B?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=8B=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=88=B0?= =?UTF-8?q?=E9=80=89=E4=B8=AD=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: ia_oi --- .../osr/render_widget_host_view_osr.cc | 22 +++++++++++++++++++ .../browser/osr/render_widget_host_view_osr.h | 2 ++ 2 files changed, 24 insertions(+) diff --git a/libcef/browser/osr/render_widget_host_view_osr.cc b/libcef/browser/osr/render_widget_host_view_osr.cc index 1e70a8222..4545d2158 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.cc +++ b/libcef/browser/osr/render_widget_host_view_osr.cc @@ -3291,6 +3291,28 @@ std::u16string CefRenderWidgetHostViewOSR::GetText() { return text_input_manager_->GetTextSelection(this)->text(); return std::u16string(); } + +void CefRenderWidgetHostViewOSR::OnTextSelectionChanged( + content::TextInputManager *text_input_manager, + RenderWidgetHostViewBase *updated_view) { + if (!text_input_manager || !updated_view) { + LOG(ERROR) << "OnTextSelectionChanged text is null"; + return; + } + const content::TextInputManager::TextSelection &selection = + *text_input_manager->GetTextSelection(updated_view); + if (!browser_impl_ || !browser_impl_->GetClient()) { + LOG(ERROR) << "OnTextSelectionChanged get client failed"; + return; + } + CefRefPtr handler = + browser_impl_->GetClient()->GetRenderHandler(); + CHECK(handler); + + handler->OnTextSelectionChanged( + browser_impl_.get(), selection.selected_text(), + CefRange(selection.range().start(), selection.range().end())); +} #endif // #ifdef OHOS_CLIPBOARD #ifdef OHOS_EX_FREE_COPY diff --git a/libcef/browser/osr/render_widget_host_view_osr.h b/libcef/browser/osr/render_widget_host_view_osr.h index 923f37c1c..54b2aee39 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.h +++ b/libcef/browser/osr/render_widget_host_view_osr.h @@ -461,6 +461,8 @@ class CefRenderWidgetHostViewOSR #ifdef OHOS_CLIPBOARD std::u16string GetSelectedText() override; std::u16string GetText(); + void OnTextSelectionChanged(content::TextInputManager* text_input_manager, + RenderWidgetHostViewBase* updated_view) override; #endif // #ifdef OHOS_CLIPBOARD #ifdef OHOS_EX_FREE_COPY -- Gitee