summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2019-07-30 11:55:34 +0200
committerSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2019-08-06 10:13:00 +0200
commit967644f09b8b7abe3b86d1647820f14e0196f8b4 (patch)
treead8fadfa70a22e7711f1d19e7e0eb118422bc7c7 /sc
parent960eb45ad2e21fdaec9ef39a6b83e752e95088ca (diff)
Improve hyperlink selection in sc
Change-Id: Ia8c6b9f9994cbe3e503061b4762dbd8648a4b857 Reviewed-on: https://gerrit.libreoffice.org/76598 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/drawfunc/drtxtob.cxx60
-rw-r--r--sc/source/ui/view/editsh.cxx16
2 files changed, 16 insertions, 60 deletions
diff --git a/sc/source/ui/drawfunc/drtxtob.cxx b/sc/source/ui/drawfunc/drtxtob.cxx
index 9a039034dd35..58943add8cbd 100644
--- a/sc/source/ui/drawfunc/drtxtob.cxx
+++ b/sc/source/ui/drawfunc/drtxtob.cxx
@@ -273,40 +273,14 @@ void ScDrawTextObjectBar::Execute( SfxRequest &rReq )
bool bDone = false;
if (eMode == HLINK_DEFAULT || eMode == HLINK_FIELD)
{
- const SvxFieldItem* pFieldItem = pOutView->GetFieldAtSelection();
- if (pFieldItem)
- {
- const SvxFieldData* pField = pFieldItem->GetField();
- if ( dynamic_cast<const SvxURLField*>( pField) )
- {
- // select old field
-
- ESelection aSel = pOutView->GetSelection();
- aSel.Adjust();
- aSel.nEndPara = aSel.nStartPara;
- aSel.nEndPos = aSel.nStartPos + 1;
- pOutView->SetSelection( aSel );
- }
- }
+ pOutView->GetFieldAtCursor();
// insert new field
-
SvxURLField aURLField( rURL, rName, SvxURLFormat::Repr );
aURLField.SetTargetFrame( rTarget );
SvxFieldItem aURLItem( aURLField, EE_FEATURE_FIELD );
pOutView->InsertField( aURLItem );
- // select new field
-
- ESelection aSel = pOutView->GetSelection();
- if ( aSel.nStartPos == aSel.nEndPos && aSel.nStartPos > 0 )
- {
- // Cursor is behind the inserted field -> extend selection to the left
-
- --aSel.nStartPos;
- pOutView->SetSelection( aSel );
- }
-
bDone = true;
}
@@ -319,9 +293,8 @@ void ScDrawTextObjectBar::Execute( SfxRequest &rReq )
break;
case SID_OPEN_HYPERLINK:
- if (const SvxFieldItem* pFieldItem = pOutView->GetFieldAtSelection())
+ if (const SvxFieldData* pField = pOutView->GetFieldAtCursor())
{
- const SvxFieldData* pField = pFieldItem->GetField();
if (const SvxURLField* pURLField = dynamic_cast<const SvxURLField*>(pField))
{
ScGlobal::OpenURL(pURLField->GetURL(), pURLField->GetTargetFrame(), true);
@@ -397,18 +370,15 @@ void ScDrawTextObjectBar::GetState( SfxItemSet& rSet )
if ( pOutView )
{
bool bField = false;
- const SvxFieldItem* pFieldItem = pOutView->GetFieldAtSelection();
- if (pFieldItem)
+ const SvxFieldData* pField = pOutView->GetFieldAtCursor();
+ if (const SvxURLField* pURLField = dynamic_cast<const SvxURLField*>(pField))
{
- const SvxFieldData* pField = pFieldItem->GetField();
- if (const SvxURLField* pURLField = dynamic_cast<const SvxURLField*>(pField))
- {
- aHLinkItem.SetName( pURLField->GetRepresentation() );
- aHLinkItem.SetURL( pURLField->GetURL() );
- aHLinkItem.SetTargetFrame( pURLField->GetTargetFrame() );
- bField = true;
- }
+ aHLinkItem.SetName( pURLField->GetRepresentation() );
+ aHLinkItem.SetURL( pURLField->GetURL() );
+ aHLinkItem.SetTargetFrame( pURLField->GetTargetFrame() );
+ bField = true;
}
+
if (!bField)
{
// use selected text as name for urls
@@ -427,17 +397,7 @@ void ScDrawTextObjectBar::GetState( SfxItemSet& rSet )
{
SdrView* pView = pViewData->GetScDrawView();
OutlinerView* pOutView = pView->GetTextEditOutlinerView();
- bool bEnable = false;
- if ( pOutView )
- {
- const SvxFieldItem* pFieldItem = pOutView->GetFieldAtSelection();
- if ( pFieldItem )
- {
- const SvxFieldData* pField = pFieldItem->GetField();
- bEnable = dynamic_cast<const SvxURLField*>( pField) != nullptr;
- }
- }
- if( !bEnable )
+ if( !URLFieldHelper::IsCursorAtURLField(pOutView) )
{
rSet.DisableItem( SID_OPEN_HYPERLINK );
rSet.DisableItem( SID_EDIT_HYPERLINK );
diff --git a/sc/source/ui/view/editsh.cxx b/sc/source/ui/view/editsh.cxx
index c2e3e3a4c118..7140f7499c06 100644
--- a/sc/source/ui/view/editsh.cxx
+++ b/sc/source/ui/view/editsh.cxx
@@ -819,16 +819,12 @@ const SvxURLField* ScEditShell::GetURLField()
{
ScInputHandler* pHdl = GetMyInputHdl();
EditView* pActiveView = pHdl ? pHdl->GetActiveView() : pEditView;
- if ( pActiveView )
- {
- const SvxFieldItem* pFieldItem = pActiveView->GetFieldAtSelection();
- if (pFieldItem)
- {
- const SvxFieldData* pField = pFieldItem->GetField();
- if ( auto pURLField = dynamic_cast<const SvxURLField*>( pField) )
- return pURLField;
- }
- }
+ if (!pActiveView)
+ return nullptr;
+
+ const SvxFieldData* pField = pActiveView->GetFieldAtCursor();
+ if (auto pURLField = dynamic_cast<const SvxURLField*>(pField))
+ return pURLField;
return nullptr;
}