[Libreoffice-commits] core.git: sc/inc sc/source

Samuel Mehrbrodt (via logerrit) logerrit at kemper.freedesktop.org
Wed Jul 17 07:05:09 UTC 2019


 sc/inc/global.hxx              |    2 ++
 sc/source/core/data/global.cxx |   37 ++++++++++++++++++++++---------------
 sc/source/ui/view/gridwin.cxx  |    6 +++---
 3 files changed, 27 insertions(+), 18 deletions(-)

New commits:
commit 22069f3d5d1c00551bd254d1002966e515295475
Author:     Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
AuthorDate: Tue Jul 16 16:42:53 2019 +0200
Commit:     Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
CommitDate: Wed Jul 17 09:04:13 2019 +0200

    tdf#126393 Select cell even when clicking on a hyperlink
    
    and the hyperlink isn't being opened anyway (no ctrl clicked e.g.)
    
    Change-Id: Ic0c0df9b91000a8e661075901e8bfdb7167081f9
    Reviewed-on: https://gerrit.libreoffice.org/75730
    Tested-by: Jenkins
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

diff --git a/sc/inc/global.hxx b/sc/inc/global.hxx
index 0c1447f16721..c71403ebcdeb 100644
--- a/sc/inc/global.hxx
+++ b/sc/inc/global.hxx
@@ -567,6 +567,8 @@ public:
     static void                 SetUserList( const ScUserList* pNewList );
     /// Open the specified URL.
     static void                 OpenURL(const OUString& rURL, const OUString& rTarget);
+    /// Whether the URL can be opened according to current security options (Click/Ctrl-Click)
+    static bool                 ShouldOpenURL();
     SC_DLLPUBLIC static OUString            GetAbsDocName( const OUString& rFileName,
                                                 const SfxObjectShell* pShell );
     SC_DLLPUBLIC static OUString            GetDocTabName( const OUString& rFileName,
diff --git a/sc/source/core/data/global.cxx b/sc/source/core/data/global.cxx
index d91222c117bc..53855d39c4fe 100644
--- a/sc/source/core/data/global.cxx
+++ b/sc/source/core/data/global.cxx
@@ -778,22 +778,9 @@ void ScGlobal::OpenURL(const OUString& rURL, const OUString& rTarget)
 {
     // OpenURL is always called in the GridWindow by mouse clicks in some way or another.
     // That's why pScActiveViewShell and nScClickMouseModifier are correct.
-    // SvtSecurityOptions to access Libreoffice global security parameters
-    SvtSecurityOptions aSecOpt;
-    bool bCtrlClickHappened = (nScClickMouseModifier & KEY_MOD1);
-    bool bCtrlClickSecOption = aSecOpt.IsOptionSet( SvtSecurityOptions::EOption::CtrlClickHyperlink );
-    if( bCtrlClickHappened && ! bCtrlClickSecOption )
-    {
-        // return since ctrl+click happened when the
-        // ctrl+click security option was disabled, link should not open
-        return;
-    }
-    else if( ! bCtrlClickHappened && bCtrlClickSecOption )
-    {
-        // ctrl+click did not happen; only click happened maybe with some
-        // other key combo. and security option is set, so return
+
+    if (!ShouldOpenURL())
         return;
-    }
 
     SfxViewFrame* pViewFrm = SfxViewFrame::Current();
     if (!pViewFrm)
@@ -852,6 +839,26 @@ void ScGlobal::OpenURL(const OUString& rURL, const OUString& rTarget)
             { &aUrl, &aTarget, &aFrm, &aReferer, &aNewView, &aBrowsing });
 }
 
+bool ScGlobal::ShouldOpenURL()
+{
+    SvtSecurityOptions aSecOpt;
+    bool bCtrlClickHappened = (nScClickMouseModifier & KEY_MOD1);
+    bool bCtrlClickSecOption = aSecOpt.IsOptionSet( SvtSecurityOptions::EOption::CtrlClickHyperlink );
+    if( bCtrlClickHappened && ! bCtrlClickSecOption )
+    {
+        // return since ctrl+click happened when the
+        // ctrl+click security option was disabled, link should not open
+        return false;
+    }
+    else if( ! bCtrlClickHappened && bCtrlClickSecOption )
+    {
+        // ctrl+click did not happen; only click happened maybe with some
+        // other key combo. and security option is set, so return
+        return false;
+    }
+    return true;
+}
+
 bool ScGlobal::IsSystemRTL()
 {
     return MsLangId::isRightToLeft( Application::GetSettings().GetLanguageTag().getLanguageType() );
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 3d0c88868b94..d7c23d5696dc 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -1805,7 +1805,7 @@ void ScGridWindow::HandleMouseButtonDown( const MouseEvent& rMEvt, MouseEventSta
             //      links in the edit cell
 
     bool bAlt = rMEvt.IsMod2();
-    if ( !bAlt && rMEvt.IsLeft() &&
+    if ( !bAlt && rMEvt.IsLeft() && ScGlobal::ShouldOpenURL() &&
             GetEditUrl(rMEvt.GetPosPixel()) )           // click on link: do not move cursor
     {
         SetPointer( PointerStyle::RefHand );
@@ -2452,7 +2452,7 @@ void ScGridWindow::MouseMove( const MouseEvent& rMEvt )
             }
             //  Field can only be URL field
             bool bAlt = rMEvt.IsMod2();
-            if ( !bAlt && !nButtonDown && pFld )
+            if ( !bAlt && !nButtonDown && ScGlobal::ShouldOpenURL() && pFld )
                 SetPointer( PointerStyle::RefHand );
             else if ( pEditView->GetEditEngine()->IsVertical() )
                 SetPointer( PointerStyle::TextVertical );
@@ -2533,7 +2533,7 @@ void ScGridWindow::MouseMove( const MouseEvent& rMEvt )
 
             if (bEditMode)                                  // First has to be in edit mode!
                 SetPointer( PointerStyle::Arrow );
-            else if ( !bAlt && !nButtonDown &&
+            else if ( !bAlt && !nButtonDown && ScGlobal::ShouldOpenURL() &&
                         GetEditUrl(rMEvt.GetPosPixel()) )
                 SetPointer( PointerStyle::RefHand );
             else if ( DrawMouseMove(rMEvt) )                // Reset pointer


More information about the Libreoffice-commits mailing list