diff --git a/libcef/browser/osr/render_widget_host_view_osr.cc b/libcef/browser/osr/render_widget_host_view_osr.cc index 1e70a8222c41357f55f3b8f08ba6325edc4e98b0..4545d2158db152e0e5bd20d1e410b26a73ff5cf2 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 923f37c1c9297fb6374898653863d4401bfba6d6..54b2aee394b9e29f96986475017f173cbc358a74 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