[PATCH] fdo#51296 Helptext added for hyperlinks, hlinks behave as i...

Akash Shetye (via Code Review) gerrit at gerrit.libreoffice.org
Mon May 27 05:13:09 PDT 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/4051

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/51/4051/1

fdo#51296 Helptext added for hyperlinks, hlinks behave  as in writer

Added prefixed of "ctrl+click to open hyperlink" to hlinks depending on the security setting. Now clicking links behave as in writer.

Change-Id: I87d0fecb6268463cd99478b70eb081ed958976be
---
M sc/inc/globstr.hrc
M sc/source/core/data/global.cxx
M sc/source/ui/src/globstr.src
M sc/source/ui/view/gridwin5.cxx
4 files changed, 72 insertions(+), 17 deletions(-)



diff --git a/sc/inc/globstr.hrc b/sc/inc/globstr.hrc
index 7dc6cd6..d053da6 100644
--- a/sc/inc/globstr.hrc
+++ b/sc/inc/globstr.hrc
@@ -673,7 +673,10 @@
 
 #define STR_FUN_TEXT_SELECTION_COUNT    546
 
-#define STR_COUNT                   547
+#define STR_CTRLCLICKHYPERLINK      548
+#define STR_CLICKHYPERLINK          549
+
+#define STR_COUNT                   560
 
 #endif
 
diff --git a/sc/source/core/data/global.cxx b/sc/source/core/data/global.cxx
index 95084a9..a34b1de 100644
--- a/sc/source/core/data/global.cxx
+++ b/sc/source/core/data/global.cxx
@@ -925,20 +925,20 @@
     //  aufgerufen, darum stimmen pScActiveViewShell und nScClickMouseModifier.
     //SvtSecurityOptions to access Libreoffice global security parameters
     SvtSecurityOptions aSecOpt;
-    bool bProceedHyperlink = false;
-    if ( (nScClickMouseModifier & KEY_MOD1) && aSecOpt.IsOptionSet( SvtSecurityOptions::E_CTRLCLICK_HYPERLINK ))     // control-click -> into new window
+    bool bCtrlClickHappened = (nScClickMouseModifier & KEY_MOD1);
+    bool bCtrlClickSecOption = aSecOpt.IsOptionSet( SvtSecurityOptions::E_CTRLCLICK_HYPERLINK );
+    if( bCtrlClickHappened && !( bCtrlClickSecOption ) )
     {
-        //Ctrl key is pressed and ctrl+click hyperlink security control is set
-        bProceedHyperlink = true;
-    }
-    else if( !aSecOpt.IsOptionSet( SvtSecurityOptions::E_CTRLCLICK_HYPERLINK ) )
-    {
-        //ctrl+click hyperlink security control is disabled just click will do
-        bProceedHyperlink = true;
-    }
-    if ( !bProceedHyperlink )
+        //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
+        return;
+    }
     SfxStringItem aUrl( SID_FILE_NAME, rURL );
     SfxStringItem aTarget( SID_TARGETNAME, rTarget );
     aTarget.SetValue(OUString("_blank"));
diff --git a/sc/source/ui/src/globstr.src b/sc/source/ui/src/globstr.src
index b9ffd2a..9ab25c1 100644
--- a/sc/source/ui/src/globstr.src
+++ b/sc/source/ui/src/globstr.src
@@ -2065,6 +2065,14 @@
     {
         Text [ en-US ] = "Invalid condition." ;
     };
+    String STR_CTRLCLICKHYPERLINK
+    {
+        Text [ en-US ] = "ctrl+click to open hyperlink:";
+    };
+    String STR_CLICKHYPERLINK
+    {
+        Text [ en-US ] = "click to open hyperlink:";
+    };
 };
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/view/gridwin5.cxx b/sc/source/ui/view/gridwin5.cxx
index 7055c22..7253feb 100644
--- a/sc/source/ui/view/gridwin5.cxx
+++ b/sc/source/ui/view/gridwin5.cxx
@@ -31,6 +31,7 @@
 #include <sfx2/viewfrm.hxx>
 
 #include <unotools/localedatawrapper.hxx>
+#include <unotools/securityoptions.hxx>
 
 #include "viewuno.hxx"
 #include "AccessibleDocument.hxx"
@@ -49,7 +50,8 @@
 #include "tabvwsh.hxx"
 #include "userdat.hxx"
 #include "postit.hxx"
-
+#include "global.hxx"
+#include "globstr.hrc"
 // -----------------------------------------------------------------------
 
 bool ScGridWindow::ShowNoteMarker( SCsCOL nPosX, SCsROW nPosY, bool bKeyboard )
@@ -237,16 +239,25 @@
 
 void ScGridWindow::RequestHelp(const HelpEvent& rHEvt)
 {
+    //To know whether to prefix STR_CTRLCLICKHYERLINK or STR_CLICKHYPERLINK
+    //to hyperlink tooltips/help text
+    SvtSecurityOptions aSecOpt;
+    //using sal_bool not bool because it seems so prominent
+    //stores state of ctrl click security setting
+    sal_Bool bCtrlClickHlink = aSecOpt.IsOptionSet( SvtSecurityOptions::E_CTRLCLICK_HYPERLINK );
+    //Global string STR_CTRLCLICKHYPERLINK i.e, "ctrl+click to open hyperlink:"
+    OUString aCtrlClickHlinkStr = ScGlobal::GetRscString( STR_CTRLCLICKHYPERLINK );
+    //Global string STR_CLICKHYPERLINK i.e, "click to open hyperlink"
+    //could have just used this and made STR_CTRLCLICKHYPERLINK by prefixing
+    //ctrl+ to it; But don't know if 'ctrl' needs localization?
+    OUString aClickHlinkStr = ScGlobal::GetRscString( STR_CLICKHYPERLINK );
     sal_Bool bDone = false;
     sal_Bool bHelpEnabled = ( rHEvt.GetMode() & ( HELPMODE_BALLOON | HELPMODE_QUICK ) ) != 0;
     SdrView* pDrView = pViewData->GetScDrawView();
-
     sal_Bool bDrawTextEdit = false;
     if (pDrView)
         bDrawTextEdit = pDrView->IsTextEdit();
-
     //  notes or change tracking
-
     if ( bHelpEnabled && !bDrawTextEdit )
     {
         Point       aPosPixel = ScreenToOutputPixel( rHEvt.GetMousePosPixel() );
@@ -300,6 +311,16 @@
                         aHelpText = pIMapObj->GetAltText();
                         if (!aHelpText.Len())
                             aHelpText = pIMapObj->GetURL();
+                        if( bCtrlClickHlink )
+                        {
+                            //prefix STR_CTRLCLICKHYPERLINK to aHelpText
+                            aHelpText = aCtrlClickHlinkStr + aHelpText;
+                        }
+                        else
+                        {
+                            //Option not set, so prefix STR_CLICKHYPERLINK
+                            aHelpText = aClickHlinkStr + aHelpText;
+                        }
                         aPixRect = LogicToPixel(aVEvt.pObj->GetLogicRect());
                     }
                 }
@@ -329,6 +350,17 @@
                             {
                                 aPixRect = LogicToPixel(aVEvt.pObj->GetLogicRect());
                                 aHelpText = pInfo->GetHlink();
+                                if( bCtrlClickHlink )
+                                {
+                                //prefix STR_CTRLCLICKHYPERLINK to aHelpText
+                                aHelpText = aCtrlClickHlinkStr + aHelpText;
+                                }
+                                else
+                                {
+                                //Option not set, so prefix STR_CLICKHYPERLINK
+                                aHelpText = aClickHlinkStr + aHelpText;
+                                }
+
                             }
                         }
                     }
@@ -344,6 +376,18 @@
                 aHelpText = INetURLObject::decode( aUrl, INET_HEX_ESCAPE,
                     INetURLObject::DECODE_UNAMBIGUOUS );
 
+                if( bCtrlClickHlink )
+                {
+                    //prefix STR_CTRLCLICKHYPERLINK to aHelpText
+                    aHelpText = aCtrlClickHlinkStr + aHelpText;
+                }
+                else
+                {
+                    //Option not set, so prefix STR_CLICKHYPERLINK
+                    aHelpText = aClickHlinkStr + aHelpText;
+                }
+
+
                 ScDocument* pDoc = pViewData->GetDocument();
                 SCsCOL nPosX;
                 SCsROW nPosY;

-- 
To view, visit https://gerrit.libreoffice.org/4051
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I87d0fecb6268463cd99478b70eb081ed958976be
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Akash Shetye <shetyeakash at gmail.com>



More information about the LibreOffice mailing list