n#780277: select field when clicking it instead of having cursor before it

Change-Id: I93d623b62e9357a71bfca3403cc98092ef58c7e4
diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx
index 6a6d744..1565d13 100644
--- a/sw/source/ui/docvw/edtwin.cxx
+++ b/sw/source/ui/docvw/edtwin.cxx
@@ -3096,6 +3096,8 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt)
                                bExecDrawTextLink = sal_True;
                        }

                        SwContentAtPos aFieldAtPos ( SwContentAtPos::SW_FIELD );

                        // only try to select frame, if pointer already was
                        // switched accordingly
                        if ( aActHitType != SDRHIT_NONE && !rSh.IsSelFrmMode() &&
@@ -3212,6 +3214,19 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt)
                            }
                        }

                        // Are we selecting a field?
                        else if ( rSh.GetContentAtPos( aDocPos, aFieldAtPos ) )
                        {
                            // select work, AdditionalMode if applicable
                            if ( KEY_MOD1 == rMEvt.GetModifier() && !rSh.IsAddMode() )
                            {
                                rSh.EnterAddMode();
                                rSh.SelWrd( &aDocPos );
                                rSh.LeaveAddMode();
                            }
                            else
                                rSh.SelWrd( &aDocPos );
                        }
                        break;
                    }
                    case 2:
@@ -4333,7 +4348,8 @@ void SwEditWin::MouseButtonUp(const MouseEvent& rMEvt)
            }
            else
            {
                if ( !rSh.IsInSelect() && rSh.ChgCurrPam( aDocPt ) )
                SwContentAtPos aFieldAtPos ( SwContentAtPos::SW_FIELD );
                if ( !rSh.IsInSelect() && rSh.ChgCurrPam( aDocPt ) && !rSh.GetContentAtPos( aDocPt, aFieldAtPos ) )
                {
                    const sal_Bool bTmpNoInterrupt = bNoInterrupt;
                    bNoInterrupt = sal_False;
@@ -4377,8 +4393,12 @@ void SwEditWin::MouseButtonUp(const MouseEvent& rMEvt)
                                                    SwContentAtPos::SW_INETATTR |
                                                    SwContentAtPos::SW_SMARTTAG  | SwContentAtPos::SW_FORMCTRL);

                        if( rSh.GetContentAtPos( aDocPt, aCntntAtPos, sal_True ) )
                        if( rSh.GetContentAtPos( aDocPt, aCntntAtPos, sal_False ) )
                        {
                            // Do it again if we're not on a field to update the cursor accordingly
                            if ( SwContentAtPos::SW_FIELD != aCntntAtPos.eCntntAtPos )
                                rSh.GetContentAtPos( aDocPt, aCntntAtPos, sal_True );

                            sal_Bool bViewLocked = rSh.IsViewLocked();
                            if( !bViewLocked && !rSh.IsReadOnlyAvailable() &&
                                aCntntAtPos.IsInProtectSect() )