diff options
Diffstat (limited to 'sc/source')
-rw-r--r-- | sc/source/ui/drawfunc/drtxtob.cxx | 60 | ||||
-rw-r--r-- | sc/source/ui/view/editsh.cxx | 16 |
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; } |