gecko-dev/accessible/interfaces/nsIAccessibleEditableText.idl
James Teh d648744f28 Bug 1837126: Don't set the selection range when HyperTextAccessibleBase::PasteText is called with TEXT_OFFSET_CARET. r=eeejay
If no text is selected, this is the same as passing the caret offset, since the selection range is already where we want it.
However, if text is selected, this allows the caller to replace it, just as it would be when pasting using the keyboard or GUI.
Note that this doesn't break any existing expectations because TEXT_OFFSET_CARET was never supported for this method previously.

This allows us to remove the DeleteText call from Android SessionAccessibility::Paste.
This separate DeleteText call was causing problems because it could result in the deletion and the insertion happening in two separate ticks, resulting in incorrect events.
Now, this should always happen in a single tick.

Differential Revision: https://phabricator.services.mozilla.com/D226108
2024-10-20 22:35:34 +00:00

62 lines
2.0 KiB
Plaintext

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsISupports.idl"
[scriptable, builtinclass, uuid(28915cca-3366-4034-ba1d-b7afb9b37639)]
interface nsIAccessibleEditableText : nsISupports
{
/**
* Replaces the text represented by this object by the given text.
*/
void setTextContents (in AString text);
/**
* Inserts text at the specified position.
*
* @param text - text that is inserted.
* @param position - index at which to insert the text.
*/
void insertText(in AString text, in long position);
/**
* Copies the text range into the clipboard.
*
* @param startPos - start index of the text to moved into the clipboard.
* @param endPos - end index of the text to moved into the clipboard.
*/
void copyText(in long startPos, in long endPos);
/**
* Deletes a range of text and copies it to the clipboard.
*
* @param startPos - start index of the text to be deleted.
* @param endOffset - end index of the text to be deleted.
*/
void cutText(in long startPos, in long endPos);
/**
* Deletes a range of text.
*
* @param startPos - start index of the text to be deleted.
* @param endPos - end index of the text to be deleted.
*/
void deleteText(in long startPos, in long endPos);
/**
* Pastes text from the clipboard.
*
* @param position - index at which to insert the text from the system
* clipboard into the text represented by this object. If
* this is TEXT_OFFSET_CARET, the text will be pasted at the
* caret just as it would be when pasting using the keyboard
* or GUI. This means that if text is already selected, it
* will be replaced with the pasted text.
*/
[can_run_script]
void pasteText(in long position);
};