sw/source/core/crsr/swcrsr.cxx |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

New commits:
commit cd7c33e31fac9906d4246cdcb4de348348226685
Author: Miklos Vajna <vmik...@collabora.co.uk>
Date:   Mon Mar 2 15:49:15 2015 +0100

    SwCursor: when tiled rendering also select word before the point
    
    On the desktop, the logic is that if we double-click before a word, then we
    select the word, but if we double-click after it, then we don't.
    
    When tiled rendering, it's more important to always select something, as
    that's how the selection can be adjusted further. So if we long push
    after a non-empty text node, then select its last word. This way
    something is always selected if e.g. the user long pushes inside a table
    cell. (If the table cell is empty, then that's handled in
    SwCrsrShell::SelectCell().)
    
    Change-Id: I6e84874b8cf252fc6b72a75ffe9db67b03636862

diff --git a/sw/source/core/crsr/swcrsr.cxx b/sw/source/core/crsr/swcrsr.cxx
index ff3ee93..94a7216 100644
--- a/sw/source/core/crsr/swcrsr.cxx
+++ b/sw/source/core/crsr/swcrsr.cxx
@@ -1366,13 +1366,24 @@ bool SwCursor::SelectWordWT( SwViewShell* pViewShell, 
sal_Int16 nWordType, const
         }
         else
         {
-            const sal_Int32 nPtPos = GetPoint()->nContent.GetIndex();
+            sal_Int32 nPtPos = GetPoint()->nContent.GetIndex();
             Boundary aBndry( g_pBreakIt->GetBreakIter()->getWordBoundary(
                                 pTxtNd->GetTxt(), nPtPos,
                                 g_pBreakIt->GetLocale( pTxtNd->GetLang( nPtPos 
) ),
                                 nWordType,
                                 bForward ));
 
+            if (pViewShell->isTiledRendering() && aBndry.startPos == 
aBndry.endPos && nPtPos > 0)
+            {
+                // nPtPos is the end of the paragraph, select the last word 
then.
+                --nPtPos;
+                aBndry = Boundary( g_pBreakIt->GetBreakIter()->getWordBoundary(
+                                    pTxtNd->GetTxt(), nPtPos,
+                                    g_pBreakIt->GetLocale( pTxtNd->GetLang( 
nPtPos ) ),
+                                    nWordType,
+                                    bForward ));
+            }
+
             if( aBndry.startPos != aBndry.endPos )
             {
                 GetPoint()->nContent = aBndry.endPos;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to