summaryrefslogtreecommitdiff
path: root/editeng/source/editeng/editview.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'editeng/source/editeng/editview.cxx')
-rw-r--r--editeng/source/editeng/editview.cxx34
1 files changed, 34 insertions, 0 deletions
diff --git a/editeng/source/editeng/editview.cxx b/editeng/source/editeng/editview.cxx
index aa39a3ce9716..6a3db26c8838 100644
--- a/editeng/source/editeng/editview.cxx
+++ b/editeng/source/editeng/editview.cxx
@@ -1293,6 +1293,40 @@ const SvxFieldItem* EditView::GetFieldAtSelection() const
return nullptr;
}
+void EditView::SelectFieldAtCursor()
+{
+ const SvxFieldItem* pFieldItem = GetFieldAtSelection();
+ if (pFieldItem)
+ {
+ // Make sure the whole field is selected
+ ESelection aSel = GetSelection();
+ if (aSel.nStartPos == aSel.nEndPos)
+ {
+ aSel.nEndPos++;
+ SetSelection(aSel);
+ }
+ }
+ if (!pFieldItem)
+ {
+ // Cursor probably behind the field - extend selection to select the field
+ ESelection aSel = GetSelection();
+ if (aSel.nStartPos > 0 && aSel.nStartPos == aSel.nEndPos)
+ {
+ aSel.nStartPos--;
+ SetSelection(aSel);
+ }
+ }
+}
+
+const SvxFieldData* EditView::GetFieldAtCursor() const
+{
+ const SvxFieldItem* pFieldItem = GetFieldUnderMousePointer();
+ if (!pFieldItem)
+ pFieldItem = GetFieldAtSelection();
+
+ return pFieldItem ? pFieldItem->GetField() : nullptr;
+}
+
void EditView::SetInvalidateMore( sal_uInt16 nPixel )
{
pImpEditView->SetInvalidateMore( nPixel );