diff options
author | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2019-12-04 15:19:00 +0100 |
---|---|---|
committer | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2019-12-05 15:59:50 +0100 |
commit | f31c3ebb60e4678eb09e377b638b368531df47dc (patch) | |
tree | 2855d383a670d1dbc0c6c2ba5323e1e8d0357e7f /editeng | |
parent | c9a6d4bee737c3c39fc61d265dba0460b09c906f (diff) |
tdf#128666 Only enable hyperlink actions when just the field is selected
Change-Id: I984df967877a47fb9f89c3626737348a87d3ffa5
Reviewed-on: https://gerrit.libreoffice.org/84418
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Diffstat (limited to 'editeng')
-rw-r--r-- | editeng/source/misc/urlfieldhelper.cxx | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/editeng/source/misc/urlfieldhelper.cxx b/editeng/source/misc/urlfieldhelper.cxx index 6df7171e14c0..564bc54e781e 100644 --- a/editeng/source/misc/urlfieldhelper.cxx +++ b/editeng/source/misc/urlfieldhelper.cxx @@ -11,27 +11,33 @@ #include <editeng/flditem.hxx> #include <editeng/editview.hxx> +#include <editeng/editeng.hxx> -void URLFieldHelper::RemoveURLField(Outliner* pOutl, const OutlinerView* pOLV) +void URLFieldHelper::RemoveURLField(EditView& pEditView) { - if (!pOutl || !pOLV) - return; - - const SvxFieldData* pField = pOLV->GetFieldAtCursor(); + pEditView.SelectFieldAtCursor(); + const SvxFieldData* pField = pEditView.GetFieldAtCursor(); if (auto pUrlField = dynamic_cast<const SvxURLField*>(pField)) { - ESelection aSel = pOLV->GetSelection(); - pOutl->QuickInsertText(pUrlField->GetRepresentation(), aSel); - pOLV->GetEditView().Invalidate(); + ESelection aSel = pEditView.GetSelection(); + pEditView.GetEditEngine()->QuickInsertText(pUrlField->GetRepresentation(), aSel); + pEditView.Invalidate(); } } -bool URLFieldHelper::IsCursorAtURLField(const OutlinerView* pOLV) +bool URLFieldHelper::IsCursorAtURLField(const EditView& pEditView) { - if (!pOLV) + // tdf#128666 Make sure only URL field (or nothing) is selected + ESelection aSel = pEditView.GetSelection(); + auto nSelectedParas = aSel.nEndPara - aSel.nStartPara; + auto nSelectedChars = aSel.nEndPos - aSel.nStartPos; + bool bIsValidSelection + = nSelectedParas == 0 + && (nSelectedChars == 0 || nSelectedChars == 1 || nSelectedChars == -1); + if (!bIsValidSelection) return false; - const SvxFieldData* pField = pOLV->GetFieldAtCursor(); + const SvxFieldData* pField = pEditView.GetFieldAtCursor(); if (dynamic_cast<const SvxURLField*>(pField)) return true; |