summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/source/core/uibase/docvw/edtwin.cxx38
1 files changed, 21 insertions, 17 deletions
diff --git a/sw/source/core/uibase/docvw/edtwin.cxx b/sw/source/core/uibase/docvw/edtwin.cxx
index d4294af0d7db..e35b68877058 100644
--- a/sw/source/core/uibase/docvw/edtwin.cxx
+++ b/sw/source/core/uibase/docvw/edtwin.cxx
@@ -3114,8 +3114,27 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt)
case MOUSE_LEFT + KEY_MOD2:
{
+ // fdo#79604: first, check if a link has been clicked - do not
+ // select fly in this case!
+ if (1 == nNumberOfClicks)
+ {
+ UpdatePointer( aDocPos, rMEvt.GetModifier() );
+ SwEditWin::m_nDDStartPosY = aDocPos.Y();
+ SwEditWin::m_nDDStartPosX = aDocPos.X();
+
+ // hit an URL in DrawText object?
+ if (bExecHyperlinks && pSdrView)
+ {
+ SdrViewEvent aVEvt;
+ pSdrView->PickAnything(rMEvt, SDRMOUSEBUTTONDOWN, aVEvt);
+
+ if (aVEvt.eEvent == SDREVENT_EXECUTEURL)
+ bExecDrawTextLink = true;
+ }
+ }
+
bool bHandledFlyClick = false;
- if ( nNumberOfClicks == nNbFlyClicks )
+ if (!bExecDrawTextLink && nNumberOfClicks == nNbFlyClicks)
{
bHandledFlyClick = true;
// only try to select frame, if pointer already was
@@ -3238,22 +3257,7 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt)
switch ( nNumberOfClicks )
{
case 1:
- {
- UpdatePointer( aDocPos, rMEvt.GetModifier() );
- SwEditWin::m_nDDStartPosY = aDocPos.Y();
- SwEditWin::m_nDDStartPosX = aDocPos.X();
-
- // hit an URL in DrawText object?
- if (bExecHyperlinks && pSdrView)
- {
- SdrViewEvent aVEvt;
- pSdrView->PickAnything(rMEvt, SDRMOUSEBUTTONDOWN, aVEvt);
-
- if (aVEvt.eEvent == SDREVENT_EXECUTEURL)
- bExecDrawTextLink = true;
- }
break;
- }
case 2:
{
bFrmDrag = false;
@@ -3650,7 +3654,7 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt)
bNoInterrupt = bTmpNoInterrupt;
}
- if ( !bOverURLGrf && !bOnlyText )
+ if (!bOverURLGrf && !bExecDrawTextLink && !bOnlyText)
{
const int nSelType = rSh.GetSelectionType();
// Check in general, if an object is selectable at given position.