[Libreoffice-commits] .: sw/source
Cédric Bosdonnat
cbosdo at kemper.freedesktop.org
Mon Dec 19 05:55:39 PST 2011
sw/source/core/access/acccontext.cxx | 15 +++++++++++++++
1 file changed, 15 insertions(+)
New commits:
commit d6dc60ab350824bd0dffbf699cac13a3efd1e289
Author: Vincent Povirk <madewokherd at gmail.com>
Date: Mon Dec 19 14:51:18 2011 +0100
sw: Fix cursor accessibility API (fdo#43390)
diff --git a/sw/source/core/access/acccontext.cxx b/sw/source/core/access/acccontext.cxx
index 8c38ba1..2949c1e 100644
--- a/sw/source/core/access/acccontext.cxx
+++ b/sw/source/core/access/acccontext.cxx
@@ -40,6 +40,7 @@
#include <viewsh.hxx>
#include <crsrsh.hxx>
#include <fesh.hxx>
+#include <wrtsh.hxx>
#include <txtfrm.hxx>
#include <ndtxt.hxx>
#include <pagefrm.hxx>
@@ -1359,6 +1360,10 @@ sal_Bool SwAccessibleContext::Select( SwPaM *pPaM, SdrObject *pObj,
if( pFEShell )
pFEShell->FinishOLEObj();
+ SwWrtShell* pWrtShell = pCrsrShell->ISA( SwWrtShell )
+ ? static_cast<SwWrtShell*>( pCrsrShell )
+ : 0;
+
sal_Bool bRet = sal_False;
if( pObj )
{
@@ -1383,7 +1388,17 @@ sal_Bool SwAccessibleContext::Select( SwPaM *pPaM, SdrObject *pObj,
bCallShowCrsr = sal_True;
}
pCrsrShell->KillPams();
+ if( pWrtShell && pPaM->HasMark() )
+ // We have to do this or SwWrtShell can't figure out that it needs
+ // to kill the selection later, when the user moves the cursor.
+ pWrtShell->SttSelect();
pCrsrShell->SetSelection( *pPaM );
+ if( pPaM->HasMark() && *pPaM->GetPoint() == *pPaM->GetMark())
+ // Setting a "Selection" that starts and ends at the same spot
+ // should remove the selection rather than create an empty one, so
+ // that we get defined behavior if accessibility sets the cursor
+ // later.
+ pCrsrShell->ClearMark();
if( bCallShowCrsr )
pCrsrShell->ShowCrsr();
bRet = sal_True;
More information about the Libreoffice-commits
mailing list