diff options
Diffstat (limited to 'sd/source/ui/func/futext.cxx')
-rw-r--r-- | sd/source/ui/func/futext.cxx | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/sd/source/ui/func/futext.cxx b/sd/source/ui/func/futext.cxx index c834fd3aa4c6..fdb04d4a7894 100644 --- a/sd/source/ui/func/futext.cxx +++ b/sd/source/ui/func/futext.cxx @@ -253,6 +253,28 @@ bool FuText::MouseButtonDown(const MouseEvent& rMEvt) SdrViewEvent aVEvt; SdrHitKind eHit = mpView->PickAnything(rMEvt, SdrMouseEventKind::BUTTONDOWN, aVEvt); + // handle URL also during the text editing + if (rMEvt.GetClicks() == 1 && rMEvt.IsLeft() && rMEvt.IsMod1()) + { + OutlinerView* pOLV = mpView->GetTextEditOutlinerView(); + + if (mxTextObj.is() && pOLV && pOLV->GetFieldUnderMousePointer()) + { + const SvxFieldItem* pFieldItem = pOLV->GetFieldUnderMousePointer(); + if (pFieldItem) + { + const SvxFieldData* pField = pFieldItem->GetField(); + + if (pField && dynamic_cast< const SvxURLField *>( pField ) != nullptr) + { + eHit = SdrHitKind::MarkedObject; + aVEvt.eEvent = SdrEventKind::ExecuteUrl; + aVEvt.pURLField = static_cast<const SvxURLField*>(pField); + } + } + } + } + if (eHit == SdrHitKind::TextEdit) { // hit text -> SdrView handles event |