From dcb080347ca127044313bbb3c11c37761cc2a7a2 Mon Sep 17 00:00:00 2001 From: Cédric Bosdonnat Date: Fri, 16 Nov 2012 13:37:04 +0100 Subject: n#780277: select field when clicking it instead of having cursor before it Change-Id: I93d623b62e9357a71bfca3403cc98092ef58c7e4 --- sw/source/ui/docvw/edtwin.cxx | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'sw') 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() ) -- cgit