summaryrefslogtreecommitdiff
path: root/sw/source/ui/docvw/edtwin.cxx
diff options
context:
space:
mode:
authorCédric Bosdonnat <cedric.bosdonnat@free.fr>2012-11-16 13:37:04 +0100
committerCédric Bosdonnat <cedric.bosdonnat@free.fr>2012-11-16 14:42:24 +0100
commitdcb080347ca127044313bbb3c11c37761cc2a7a2 (patch)
tree2b7c80c73e60d38f80b41853ba27cfe9e1760434 /sw/source/ui/docvw/edtwin.cxx
parentac1e59a1abea03d55286d6b2268572e1199c15ef (diff)
n#780277: select field when clicking it instead of having cursor before it
Change-Id: I93d623b62e9357a71bfca3403cc98092ef58c7e4
Diffstat (limited to 'sw/source/ui/docvw/edtwin.cxx')
-rw-r--r--sw/source/ui/docvw/edtwin.cxx24
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() )