Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.5:Update
libreoffice.19920
bsc1185797.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bsc1185797.patch of Package libreoffice.19920
From db6efbaf5f9d6ae818afccec6a9fab219268b621 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Vajngerl?= <tomaz.vajngerl@collabora.co.uk> Date: Sun, 6 Jun 2021 20:55:28 +0900 Subject: [PATCH] tdf#142478 fix crash when searching and a viewshell change occurs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When searching a impress document for a word, and the word is in notes as welll as in the document, a crash happens (only when searching with "find all"). The regressing commit changed that the search is now bound to a view (and to a viewshell). When searching for words in notes and document, at the transition from "standard" to "notes" page kind mode, the view and viewshells are destroyed and the new one created again. The problem lies here as when we destroy the viewshell, we also destroy the search context and FuSearch objects, but we are still executing the search -> crash. The solution for this is that when we change the page kind, we take the FuSearch object from the old viewshell and put it into the newly created viewshell, so that we keep the FuSearch object alive and don't throw away the search context too. Change-Id: I50931cca2a20c5704f7450e3cc8b3466af4c5a3e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116758 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> (cherry picked from commit 3b75f9add7ed80e803b0771d86892d6ca0f47e71) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116703 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> --- sd/source/ui/view/Outliner.cxx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sd/source/ui/view/Outliner.cxx b/sd/source/ui/view/Outliner.cxx index 59e740b4bda1..70df0bd17bfe 100644 --- a/sd/source/ui/view/Outliner.cxx +++ b/sd/source/ui/view/Outliner.cxx @@ -61,6 +61,7 @@ #include <comphelper/lok.hxx> #include <comphelper/scopeguard.hxx> #include <VectorGraphicSearchContext.hxx> +#include <fusearch.hxx> using namespace ::com::sun::star; using namespace ::com::sun::star::uno; @@ -1550,6 +1551,11 @@ void SdOutliner::SetViewMode (PageKind ePageKind) bool bMatchMayExist = mbMatchMayExist; sd::ViewShellBase& rBase = pViewShell->GetViewShellBase(); + + rtl::Reference<sd::FuSearch> xFuSearch; + if (pViewShell->GetView()) + xFuSearch = pViewShell->GetView()->getSearchContext().getFunctionSearch(); + SetViewShell(std::shared_ptr<sd::ViewShell>()); sd::framework::FrameworkHelper::Instance(rBase)->RequestView( sViewURL, @@ -1560,7 +1566,11 @@ void SdOutliner::SetViewMode (PageKind ePageKind) // instead. But that would involve major restructuring of the // Outliner code. sd::framework::FrameworkHelper::Instance(rBase)->RequestSynchronousUpdate(); - SetViewShell(rBase.GetMainViewShell()); + + auto pNewViewShell = rBase.GetMainViewShell(); + SetViewShell(pNewViewShell); + if (xFuSearch.is() && pNewViewShell->GetView()) + pNewViewShell->GetView()->getSearchContext().setSearchFunction(xFuSearch); // Switching to another view shell has intermediatly called // EndSpelling(). A PrepareSpelling() is pending, so call that now.
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor