[Libreoffice-commits] core.git: 2 commits - sd/source sw/source

Michael Stahl mstahl at redhat.com
Mon Oct 6 15:32:30 PDT 2014


 sd/source/ui/unoidl/unopback.cxx  |    2 ++
 sw/source/uibase/docvw/edtwin.cxx |   38 +++++++++++++++++++++-----------------
 2 files changed, 23 insertions(+), 17 deletions(-)

New commits:
commit 60a67da70fd9b6f69c68046cae471bdd1d34c407
Author: Michael Stahl <mstahl at redhat.com>
Date:   Mon Oct 6 23:47:11 2014 +0200

    ~SdUnoPageBackground() gets a SolarMutexGuard
    
    Change-Id: I76582bb6a1a8dee56611f1463d3e63246eefb310

diff --git a/sd/source/ui/unoidl/unopback.cxx b/sd/source/ui/unoidl/unopback.cxx
index 8b50af5..4157b12 100644
--- a/sd/source/ui/unoidl/unopback.cxx
+++ b/sd/source/ui/unoidl/unopback.cxx
@@ -71,6 +71,8 @@ SdUnoPageBackground::SdUnoPageBackground(
 
 SdUnoPageBackground::~SdUnoPageBackground() throw()
 {
+    SolarMutexGuard g;
+
     if( mpDoc )
         EndListening( *mpDoc );
 
commit 5284e44ed0594a79b0cc22090a9a82b19962f6c2
Author: Michael Stahl <mstahl at redhat.com>
Date:   Mon Oct 6 23:37:18 2014 +0200

    fdo#79604: sw: fix clicking on hyper-links in Draw objects
    
    The URL is dispatched in MouseButtonUp(), but this relies on
    MouseButtonDown() not selecting the drawing object when the cursor is
    over an URL field.
    
    (probably regression from commit 7e2f98d0a0c4a0f36a94353a256e7cc5caa3113b
     and commit 5ed14025645200c77249da364870f5772c01df17)
    
    Change-Id: Ib1504baff5d1fffd6ce53b41d3ff726d8e4d5c9d

diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx
index 7bf7da3..dcc3b9d 100644
--- a/sw/source/uibase/docvw/edtwin.cxx
+++ b/sw/source/uibase/docvw/edtwin.cxx
@@ -3167,8 +3167,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
@@ -3291,22 +3310,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;
@@ -3684,7 +3688,7 @@ void SwEditWin::MouseButtonDown(const MouseEvent& _rMEvt)
                     MoveCursor( rSh, aDocPos, bOnlyText, bLockView );
                     bCallBase = false;
                 }
-                if ( !bOverURLGrf && !bOnlyText )
+                if (!bOverURLGrf && !bExecDrawTextLink && !bOnlyText)
                 {
                     const int nSelType = rSh.GetSelectionType();
                     // Check in general, if an object is selectable at given position.


More information about the Libreoffice-commits mailing list