Hi, I have submitted a patch for review:
https://gerrit.libreoffice.org/3100 To pull it, you can do: git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/00/3100/1 fdo#60513: SwCrsrShell::Push(): take position from table cursor If there is a table cursor, store its point/mark position on the cursor stack instead of pCurCrsr, which in this case is just one cell in a ring that contains a SwShellCrsr for every selected cell. SwCrsrShell::Pop() is surprisingly able to restore the prior state, because it calls UpdateCrsr(), which detects that the pCurCrsr spans multiple table cells and re-creates pTblCrsr, and then later on the first GetCrsr() call SwTableCursor::MakeBoxSels() will restore the ring of SwShellCrsrs from the pTblCrsr selection. Change-Id: Ibe9a7f379ece61c7dab1a6f69abaebf42a4c85ec (cherry picked from commit b227a8e4d65e4bbfe991aed9342fe3e30eca8639) --- M sw/source/core/crsr/crsrsh.cxx 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx index 379af07..ac00ff7 100644 --- a/sw/source/core/crsr/crsrsh.cxx +++ b/sw/source/core/crsr/crsrsh.cxx @@ -1859,13 +1859,17 @@ /// create a copy of the cursor and save it in the stack void SwCrsrShell::Push() { - pCrsrStk = new SwShellCrsr( *this, *pCurCrsr->GetPoint(), - pCurCrsr->GetPtPos(), pCrsrStk ); + // fdo#60513: if we have a table cursor, copy that; else copy current. + // This seems to work because UpdateCrsr() will fix this up on Pop(), + // then MakeBoxSels() will re-create the current pCurCrsr cell ring. + SwShellCrsr *const pCurrent((pTblCrsr) ? pTblCrsr : pCurCrsr); + pCrsrStk = new SwShellCrsr( *this, *pCurrent->GetPoint(), + pCurrent->GetPtPos(), pCrsrStk ); - if( pCurCrsr->HasMark() ) + if (pCurrent->HasMark()) { pCrsrStk->SetMark(); - *pCrsrStk->GetMark() = *pCurCrsr->GetMark(); + *pCrsrStk->GetMark() = *pCurrent->GetMark(); } } -- To view, visit https://gerrit.libreoffice.org/3100 To unsubscribe, visit https://gerrit.libreoffice.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibe9a7f379ece61c7dab1a6f69abaebf42a4c85ec Gerrit-PatchSet: 1 Gerrit-Project: core Gerrit-Branch: libreoffice-4-0 Gerrit-Owner: Michael Stahl <mst...@redhat.com> _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice