/* -*- 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/. */
/** * A transaction that deletes an entire range in the content tree
*/ class DeleteRangeTransaction final : public EditAggregateTransaction { protected:
DeleteRangeTransaction(EditorBase& aEditorBase, const nsRange& aRangeToDelete);
public: /** * Creates a delete range transaction. This never returns nullptr. * * @param aEditorBase The object providing basic editing operations. * @param aRangeToDelete The range to delete.
*/ static already_AddRefed<DeleteRangeTransaction> Create(
EditorBase& aEditorBase, const nsRange& aRangeToDelete) {
RefPtr<DeleteRangeTransaction> transaction = new DeleteRangeTransaction(aEditorBase, aRangeToDelete); return transaction.forget();
}
/** * Return a good point to put caret after calling DoTransaction().
*/
EditorDOMPoint SuggestPointToPutCaret() const { return mPointToPutCaret.IsSetAndValid() ? mPointToPutCaret
: EditorDOMPoint();
}
protected: /** * Extend the range by adding a surrounding whitespace character to the range * that is about to be deleted. This method depends on the pref * `layout.word_select.delete_space_after_doubleclick_selection`. * * Considered cases: * "one [two] three" -> "one [two ]three" -> "one three" * "[one] two" -> "[one ]two" -> "two" * "one [two]" -> "one[ two]" -> "one" * "one [two], three" -> "one[ two], three" -> "one, three" * "one [two]" -> "one [ two]" -> "one " * * @param aRange [inout] The range that is about to be deleted. * @return NS_OK, unless nsRange::SetStart / ::SetEnd fails.
*/
nsresult MaybeExtendDeletingRangeWithSurroundingWhitespace(
nsRange& aRange) const;
/** * AppendTransactionsToDeleteIn() creates a DeleteTextTransaction or some * DeleteNodeTransactions to remove text or nodes between aStart and aEnd * and appends the created transactions to the array. * * @param aRangeToDelete Must be positioned, valid and in same container. * @return Returns NS_OK in most cases. * When the arguments are invalid, returns * NS_ERROR_INVALID_ARG. * When mEditorBase isn't available, returns * NS_ERROR_NOT_AVAILABLE. * When created DeleteTextTransaction cannot do its * transaction, returns NS_ERROR_FAILURE. * Note that even if one of created DeleteNodeTransaction * cannot do its transaction, this returns NS_OK.
*/
nsresult AppendTransactionsToDeleteIn( const EditorRawDOMRange& aRangeToDelete);
/** * AppendTransactionsToDeleteNodesWhoseEndBoundaryIn() creates * DeleteNodeTransaction instances to remove nodes whose end is in the range * (in other words, its end tag is in the range if it's an element) and append * them to the array. * * @param aRangeToDelete Must be positioned and valid.
*/
nsresult AppendTransactionsToDeleteNodesWhoseEndBoundaryIn( const EditorRawDOMRange& aRangeToDelete);
/** * AppendTransactionToDeleteText() creates a DeleteTextTransaction to delete * text between start of aPoint.GetContainer() and aPoint or aPoint and end of * aPoint.GetContainer() and appends the created transaction to the array. * * @param aMaybePointInText Must be set and valid. If the point is not * in a text node, this method does nothing. * @param aAction If nsIEditor::eNext, this method creates a transaction * to delete text from aPoint to the end of the data node. * Otherwise, this method creates a transaction to delete * text from start of the data node to aPoint. * @return Returns NS_OK in most cases. * When the arguments are invalid, returns * NS_ERROR_INVALID_ARG. * When mEditorBase isn't available, returns * NS_ERROR_NOT_AVAILABLE. * When created DeleteTextTransaction cannot do its * transaction, returns NS_ERROR_FAILURE. * Note that even if no character will be deleted, * this returns NS_OK.
*/
nsresult AppendTransactionToDeleteText( const EditorRawDOMPoint& aMaybePointInText,
nsIEditor::EDirection aAction);
// The editor for this transaction.
RefPtr<EditorBase> mEditorBase;
// P1 in the range. This is only non-null until DoTransaction is called and // we convert it into child transactions.
RefPtr<nsRange> mRangeToDelete;
EditorDOMPoint mPointToPutCaret;
};
} // namespace mozilla
#endif// #ifndef DeleteRangeTransaction_h
¤ Dauer der Verarbeitung: 0.24 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.