From d41053defd59257a13916a096da40db152b4b41e Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Thu, 18 Jan 2024 13:04:35 +0100 Subject: tdf#158277 sw_redlinehide: fix find bar string FindTextFieldControl::SetTextToSelected_Impl() uses the XModel to retrieve the currently selected text, which naturally includes deleted text. Instead, use view API XTextViewCursor to get the visible selected text. (regression from commit ae2232366f00e08c1855667cfaf068269ac9af2f) Change-Id: I302ea90a7407af6e3ae7b62a2f373dccb33b8275 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162245 Tested-by: Jenkins Reviewed-by: Michael Stahl (cherry picked from commit 1f540c49e68b28a360ee5c32d60ab1bed3837eec) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162229 Reviewed-by: Xisco Fauli --- svx/source/tbxctrls/tbunosearchcontrollers.cxx | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'svx') diff --git a/svx/source/tbxctrls/tbunosearchcontrollers.cxx b/svx/source/tbxctrls/tbunosearchcontrollers.cxx index 8e833167ea12..f8c4436443bc 100644 --- a/svx/source/tbxctrls/tbunosearchcontrollers.cxx +++ b/svx/source/tbxctrls/tbunosearchcontrollers.cxx @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -243,12 +244,21 @@ void FindTextFieldControl::SetTextToSelected_Impl() try { css::uno::Reference xController(m_xFrame->getController(), css::uno::UNO_SET_THROW); - css::uno::Reference xModel(xController->getModel(), css::uno::UNO_SET_THROW); - css::uno::Reference xIndexAccess(xModel->getCurrentSelection(), css::uno::UNO_QUERY_THROW); - if (xIndexAccess->getCount() > 0) + uno::Reference const xTVCS(xController, uno::UNO_QUERY); + if (xTVCS.is()) { - css::uno::Reference xTextRange(xIndexAccess->getByIndex(0), css::uno::UNO_QUERY_THROW); - aString = xTextRange->getString(); + uno::Reference const xTVC(xTVCS->getViewCursor()); + aString = xTVC->getString(); + } + else + { + uno::Reference xModel(xController->getModel(), uno::UNO_SET_THROW); + uno::Reference xIndexAccess(xModel->getCurrentSelection(), uno::UNO_QUERY_THROW); + if (xIndexAccess->getCount() > 0) + { + uno::Reference xTextRange(xIndexAccess->getByIndex(0), uno::UNO_QUERY_THROW); + aString = xTextRange->getString(); + } } } catch ( ... ) -- cgit