sw/source/core/layout/fly.cxx | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-)
New commits: commit 142dc93d9ad793e036baa5573aea31cb6f416f57 Author: Michael Stahl <[email protected]> AuthorDate: Mon Oct 26 16:41:29 2020 +0100 Commit: Michael Stahl <[email protected]> CommitDate: Tue Oct 27 09:46:16 2020 +0100 (related: tdf#131679) sw: only unmark if this SwFlyFrame is marked Seems kind of pointless to unmark flys that aren't deleted. SwFEShell::SelectObj() apparently guarantees that at most 1 SwFlyFrame is marked. Change-Id: I061fc640512192e6e0a916020e3ac0b91c75d5c7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104818 Tested-by: Jenkins Reviewed-by: Michael Stahl <[email protected]> diff --git a/sw/source/core/layout/fly.cxx b/sw/source/core/layout/fly.cxx index d44af82f1eac..49f522c42d41 100644 --- a/sw/source/core/layout/fly.cxx +++ b/sw/source/core/layout/fly.cxx @@ -409,23 +409,27 @@ void SwFlyFrame::FinitDrawObj() if (rCurrentShell.HasDrawView() && rCurrentShell.Imp()->GetDrawView()->GetMarkedObjectList().GetMarkCount()) { - if (SwFEShell *const pFEShell = dynamic_cast<SwFEShell*>(&rCurrentShell)) - { // tdf#131679 move any cursor out of fly - SwFlyFrame const*const pOldSelFly = ::GetFlyFromMarked(nullptr, pFEShell); - rCurrentShell.Imp()->GetDrawView()->UnmarkAll(); - if (pOldSelFly) + SwFlyFrame const*const pOldSelFly = ::GetFlyFromMarked(nullptr, &rCurrentShell); + if (pOldSelFly == this) + { + assert(rCurrentShell.Imp()->GetDrawView()->GetMarkedObjectList().GetMarkCount() == 1); + if (SwFEShell *const pFEShell = dynamic_cast<SwFEShell*>(&rCurrentShell)) + { // tdf#131679 move any cursor out of fly + rCurrentShell.Imp()->GetDrawView()->UnmarkAll(); + if (pOldSelFly) + { + SwPosition const pos(ResolveFlyAnchor(*pOldSelFly->GetFormat())); + SwPaM const temp(pos); + pFEShell->SetSelection(temp); + // could also call SetCursor() like SwFEShell::SelectObj() + // does, but that would access layout a bit much... + } + } + else { - SwPosition const pos(ResolveFlyAnchor(*pOldSelFly->GetFormat())); - SwPaM const temp(pos); - pFEShell->SetSelection(temp); - // could also call SetCursor() like SwFEShell::SelectObj() - // does, but that would access layout a bit much... + rCurrentShell.Imp()->GetDrawView()->UnmarkAll(); } } - else - { - rCurrentShell.Imp()->GetDrawView()->UnmarkAll(); - } } } } _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
