[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