diff -r 000000000000 -r 6474c204b198 editor/libeditor/base/InsertTextTxn.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/editor/libeditor/base/InsertTextTxn.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,77 @@ +/* -*- 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/. */ + +#ifndef InsertTextTxn_h__ +#define InsertTextTxn_h__ + +#include "EditTxn.h" // for EditTxn, NS_DECL_EDITTXN +#include "nsCOMPtr.h" // for nsCOMPtr +#include "nsCycleCollectionParticipant.h" +#include "nsID.h" // for nsIID +#include "nsIDOMCharacterData.h" // for nsIDOMCharacterData +#include "nsISupportsImpl.h" // for NS_DECL_ISUPPORTS_INHERITED +#include "nsString.h" // for nsString +#include "nscore.h" // for NS_IMETHOD, nsAString + +class nsIEditor; +class nsITransaction; + + +#define INSERT_TEXT_TXN_CID \ +{/* 93276f00-ab2c-11d2-8f4b-006008159b0c*/ \ +0x93276f00, 0xab2c, 0x11d2, \ +{0x8f, 0xb4, 0x0, 0x60, 0x8, 0x15, 0x9b, 0xc} } + +/** + * A transaction that inserts text into a content node. + */ +class InsertTextTxn : public EditTxn +{ +public: + + static const nsIID& GetCID() { static const nsIID iid = INSERT_TEXT_TXN_CID; return iid; } + + /** initialize the transaction + * @param aElement the text content node + * @param aOffset the location in aElement to do the insertion + * @param aString the new text to insert + * @param aPresShell used to get and set the selection + */ + NS_IMETHOD Init(nsIDOMCharacterData *aElement, + uint32_t aOffset, + const nsAString& aString, + nsIEditor *aEditor); + + InsertTextTxn(); + + NS_DECL_ISUPPORTS_INHERITED + NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(InsertTextTxn, EditTxn) + + NS_DECL_EDITTXN + + NS_IMETHOD Merge(nsITransaction *aTransaction, bool *aDidMerge); + + /** return the string data associated with this transaction */ + NS_IMETHOD GetData(nsString& aResult); + +protected: + + /** return true if aOtherTxn immediately follows this txn */ + virtual bool IsSequentialInsert(InsertTextTxn *aOtherTxn); + + /** the text element to operate upon */ + nsCOMPtr mElement; + + /** the offset into mElement where the insertion is to take place */ + uint32_t mOffset; + + /** the text to insert into mElement at mOffset */ + nsString mStringToInsert; + + /** the editor, which we'll need to get the selection */ + nsIEditor *mEditor; +}; + +#endif