summaryrefslogtreecommitdiff
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:58:57 +0100
commit90bb5281988d8088cd73a4134b162be1165bde61 (patch)
tree898f238e7d2970ff39f687608667d1742d5a3c5a
parent4ef4b2848181b482f011f56fc3610eef2a8a282c (diff)
n#780277: select field when clicking it instead of having cursor before it
Change-Id: I93d623b62e9357a71bfca3403cc98092ef58c7e4
-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 2afa975b2b5c..712b31f01ad5 100644
--- a/sw/source/ui/docvw/edtwin.cxx
+++ b/sw/source/ui/docvw/edtwin.cxx
@@ -2974,6 +2974,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() &&
@@ -3090,6 +3092,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:
@@ -4213,7 +4228,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;
@@ -4257,8 +4273,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() )