mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 04:45:45 +00:00
Fix for bug #75305: Doing Undo and Redo crashes browser
Added nsAutoUpdateViewBatch class, and use it in nsPlaintexteditor::Undo()/Redo(). editor/base/nsEditorUtils.h editor/base/nsPlaintextEditor.cpp r=jfrancis@netscape.com sr=sfraser@netscape.com
This commit is contained in:
parent
91d049b213
commit
729a670d51
@ -144,6 +144,31 @@ class nsAutoTxnsConserveSelection
|
||||
PRBool mOldState;
|
||||
};
|
||||
|
||||
/***************************************************************************
|
||||
* stack based helper class for batching reflow and paint requests.
|
||||
*/
|
||||
class nsAutoUpdateViewBatch
|
||||
{
|
||||
public:
|
||||
|
||||
nsAutoUpdateViewBatch(nsEditor *ed) : mEd(ed)
|
||||
{
|
||||
NS_ASSERTION(mEd, "null mEd pointer!");
|
||||
|
||||
if (mEd)
|
||||
mEd->BeginUpdateViewBatch();
|
||||
}
|
||||
|
||||
~nsAutoUpdateViewBatch()
|
||||
{
|
||||
if (mEd)
|
||||
mEd->EndUpdateViewBatch();
|
||||
}
|
||||
|
||||
protected:
|
||||
nsEditor *mEd;
|
||||
};
|
||||
|
||||
/******************************************************************************
|
||||
* some helper classes for iterating the dom tree
|
||||
*****************************************************************************/
|
||||
|
@ -1301,6 +1301,8 @@ nsPlaintextEditor::SetWrapWidth(PRInt32 aWrapColumn)
|
||||
NS_IMETHODIMP
|
||||
nsPlaintextEditor::Undo(PRUint32 aCount)
|
||||
{
|
||||
nsAutoUpdateViewBatch beginViewBatching(this);
|
||||
|
||||
ForceCompositionEnd();
|
||||
nsresult result = NS_OK;
|
||||
|
||||
@ -1327,6 +1329,7 @@ nsPlaintextEditor::Redo(PRUint32 aCount)
|
||||
{
|
||||
nsresult result = NS_OK;
|
||||
|
||||
nsAutoUpdateViewBatch beginViewBatching(this);
|
||||
nsAutoRules beginRulesSniffing(this, kOpRedo, nsIEditor::eNone);
|
||||
|
||||
nsTextRulesInfo ruleInfo(nsTextEditRules::kRedo);
|
||||
|
@ -144,6 +144,31 @@ class nsAutoTxnsConserveSelection
|
||||
PRBool mOldState;
|
||||
};
|
||||
|
||||
/***************************************************************************
|
||||
* stack based helper class for batching reflow and paint requests.
|
||||
*/
|
||||
class nsAutoUpdateViewBatch
|
||||
{
|
||||
public:
|
||||
|
||||
nsAutoUpdateViewBatch(nsEditor *ed) : mEd(ed)
|
||||
{
|
||||
NS_ASSERTION(mEd, "null mEd pointer!");
|
||||
|
||||
if (mEd)
|
||||
mEd->BeginUpdateViewBatch();
|
||||
}
|
||||
|
||||
~nsAutoUpdateViewBatch()
|
||||
{
|
||||
if (mEd)
|
||||
mEd->EndUpdateViewBatch();
|
||||
}
|
||||
|
||||
protected:
|
||||
nsEditor *mEd;
|
||||
};
|
||||
|
||||
/******************************************************************************
|
||||
* some helper classes for iterating the dom tree
|
||||
*****************************************************************************/
|
||||
|
@ -1301,6 +1301,8 @@ nsPlaintextEditor::SetWrapWidth(PRInt32 aWrapColumn)
|
||||
NS_IMETHODIMP
|
||||
nsPlaintextEditor::Undo(PRUint32 aCount)
|
||||
{
|
||||
nsAutoUpdateViewBatch beginViewBatching(this);
|
||||
|
||||
ForceCompositionEnd();
|
||||
nsresult result = NS_OK;
|
||||
|
||||
@ -1327,6 +1329,7 @@ nsPlaintextEditor::Redo(PRUint32 aCount)
|
||||
{
|
||||
nsresult result = NS_OK;
|
||||
|
||||
nsAutoUpdateViewBatch beginViewBatching(this);
|
||||
nsAutoRules beginRulesSniffing(this, kOpRedo, nsIEditor::eNone);
|
||||
|
||||
nsTextRulesInfo ruleInfo(nsTextEditRules::kRedo);
|
||||
|
Loading…
Reference in New Issue
Block a user