diff options
author | Cédric Bosdonnat <cedric.bosdonnat@free.fr> | 2012-11-16 13:37:04 +0100 |
---|---|---|
committer | Cédric Bosdonnat <cedric.bosdonnat@free.fr> | 2012-11-16 14:42:24 +0100 |
commit | dcb080347ca127044313bbb3c11c37761cc2a7a2 (patch) | |
tree | 2b7c80c73e60d38f80b41853ba27cfe9e1760434 /sw | |
parent | ac1e59a1abea03d55286d6b2268572e1199c15ef (diff) |
n#780277: select field when clicking it instead of having cursor before it
Change-Id: I93d623b62e9357a71bfca3403cc98092ef58c7e4
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/ui/docvw/edtwin.cxx | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx index 6a6d7443f1e2..1565d13aff4e 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() ) |