[Libreoffice-commits] core.git: Branch 'distro/suse/suse-3.6' - sw/source

Miklos Vajna vmiklos at suse.cz
Mon Jun 10 07:11:18 PDT 2013


 sw/source/core/layout/trvlfrm.cxx |   32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

New commits:
commit 6370599f00d614734cbb0920081c85f72e931ca9
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Mon Jun 10 14:48:59 2013 +0200

    bnc#802888 SwPageFrm: one more clickable field fix
    
    This is similar to a996678ed30804e16103e1cfdc439c8546e5d3b0. If we have
    both a background object and some clickable field to select, we should
    always prefer the clickable field.
    
    This time, the problem was to click on a clickable field, when the
    cursor was in normal text and we had a full-page background object.
    
    (cherry picked from commit 721baad94ee81d9d6281edb93ee45936f6e0e496)
    
    Conflicts:
    	sw/source/core/layout/trvlfrm.cxx
    
    Change-Id: Id25036d8cb2ddf62011c22bfc50844b793b942bd

diff --git a/sw/source/core/layout/trvlfrm.cxx b/sw/source/core/layout/trvlfrm.cxx
index 0fa03e1..05935ba 100644
--- a/sw/source/core/layout/trvlfrm.cxx
+++ b/sw/source/core/layout/trvlfrm.cxx
@@ -269,13 +269,28 @@ sal_Bool SwPageFrm::GetCrsrOfst( SwPosition *pPos, Point &rPoint,
             }
         }
 
+        bool bConsiderBackground = true;
+        SwCntntNode* pTextNd = aTextPos.nNode.GetNode( ).GetCntntNode( );
+        // If the text position is a clickable field, then that should have priority.
+        if (pTextNd && pTextNd->IsTxtNode())
+        {
+            SwTxtNode* pTxtNd = pTextNd->GetTxtNode();
+            SwTxtAttr* pTxtAttr = pTxtNd->GetTxtAttrForCharAt(aTextPos.nContent.GetIndex(), RES_TXTATR_FIELD);
+            if (pTxtAttr)
+            {
+                const SwField* pField = pTxtAttr->GetFld().GetFld();
+                if (pField->IsClickable())
+                    bConsiderBackground = false;
+            }
+        }
+
         // Check objects in the background if nothing else matched
         if ( GetSortedObjs() )
         {
             bBackRet = lcl_GetCrsrOfst_Objects( this, true, &aBackPos, rPoint, pCMS );
         }
 
-        if ( ( bTestBackground && bBackRet ) || !bTextRet )
+        if ( ( bConsiderBackground && bTestBackground && bBackRet ) || !bTextRet )
         {
             bRet = bBackRet;
             (*pPos) = aBackPos;
@@ -291,7 +306,6 @@ sal_Bool SwPageFrm::GetCrsrOfst( SwPosition *pPos, Point &rPoint,
              * text and brackground object, then we compute the distance between both
              * would-be positions and the click point. The shortest distance wins.
              */
-            SwCntntNode* pTextNd = aTextPos.nNode.GetNode( ).GetCntntNode( );
             double nTextDistance = 0;
             bool bValidTextDistance = false;
             if ( pTextNd )
@@ -304,20 +318,6 @@ sal_Bool SwPageFrm::GetCrsrOfst( SwPosition *pPos, Point &rPoint,
                 bValidTextDistance = true;
             }
 
-            bool bConsiderBackground = true;
-            // If the text position is a clickable field, then that should have priority.
-            if (pTextNd->IsTxtNode())
-            {
-                SwTxtNode* pTxtNd = pTextNd->GetTxtNode();
-                SwTxtAttr* pTxtAttr = pTxtNd->GetTxtAttrForCharAt(aTextPos.nContent.GetIndex(), RES_TXTATR_FIELD);
-                if (pTxtAttr)
-                {
-                    const SwField* pField = pTxtAttr->GetFld().GetFld();
-                    if (pField->IsClickable())
-                        bConsiderBackground = false;
-                }
-            }
-
             double nBackDistance = 0;
             bool bValidBackDistance = false;
             SwCntntNode* pBackNd = aBackPos.nNode.GetNode( ).GetCntntNode( );


More information about the Libreoffice-commits mailing list