зеркало из https://github.com/mozilla/pjs.git
25779: Add/improve alternate windows cut/copy/paste key bindings: r=brade sr=sfraser.
68747: Remove redundant code in nsHTMLEditor. sr=sfraser.
This commit is contained in:
Родитель
4cad25cc57
Коммит
109f0be87c
|
@ -176,7 +176,7 @@ NS_IMETHODIMP PlaceholderTxn::Merge(PRBool *aDidMerge, nsITransaction *aTransact
|
||||||
// efficiency hack: no need to remember selection here, as we haven't yet
|
// efficiency hack: no need to remember selection here, as we haven't yet
|
||||||
// finished the inital batch and we know we will be told when the batch ends.
|
// finished the inital batch and we know we will be told when the batch ends.
|
||||||
// we can remeber the selection then.
|
// we can remeber the selection then.
|
||||||
if (gNoisy) { printf("Placeholder txn assimilated %p\n", aTransaction); }
|
if (gNoisy) { printf("Placeholder txn assimilated %p\n", (void*)aTransaction); }
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // merge typing or IME or deletion transactions if the selection matches
|
{ // merge typing or IME or deletion transactions if the selection matches
|
||||||
|
|
|
@ -118,6 +118,37 @@ nsCutCommand::DoCommand(const PRUnichar *aCommand, nsISupports * refCon)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsCutOrDeleteCommand::IsCommandEnabled(const PRUnichar *aCommand, nsISupports * refCon, PRBool *outCmdEnabled)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon);
|
||||||
|
*outCmdEnabled = (editor != nsnull);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsCutOrDeleteCommand::DoCommand(const PRUnichar *aCommand, nsISupports * refCon)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon);
|
||||||
|
if (editor)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsISelection> selection;
|
||||||
|
nsresult rv = editor->GetSelection(getter_AddRefs(selection));
|
||||||
|
if (NS_SUCCEEDED(rv) && selection)
|
||||||
|
{
|
||||||
|
PRBool isCollapsed;
|
||||||
|
rv = selection->GetIsCollapsed(&isCollapsed);
|
||||||
|
if (NS_SUCCEEDED(rv) && isCollapsed)
|
||||||
|
return editor->DeleteSelection(nsIEditor::eNext);
|
||||||
|
}
|
||||||
|
return editor->Cut();
|
||||||
|
}
|
||||||
|
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsCopyCommand::IsCommandEnabled(const PRUnichar *aCommand, nsISupports * refCon, PRBool *outCmdEnabled)
|
nsCopyCommand::IsCommandEnabled(const PRUnichar *aCommand, nsISupports * refCon, PRBool *outCmdEnabled)
|
||||||
{
|
{
|
||||||
|
@ -141,6 +172,37 @@ nsCopyCommand::DoCommand(const PRUnichar *aCommand, nsISupports * refCon)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsCopyOrDeleteCommand::IsCommandEnabled(const PRUnichar *aCommand, nsISupports * refCon, PRBool *outCmdEnabled)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon);
|
||||||
|
*outCmdEnabled = (editor != nsnull);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsCopyOrDeleteCommand::DoCommand(const PRUnichar *aCommand, nsISupports * refCon)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon);
|
||||||
|
if (editor)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsISelection> selection;
|
||||||
|
nsresult rv = editor->GetSelection(getter_AddRefs(selection));
|
||||||
|
if (NS_SUCCEEDED(rv) && selection)
|
||||||
|
{
|
||||||
|
PRBool isCollapsed;
|
||||||
|
rv = selection->GetIsCollapsed(&isCollapsed);
|
||||||
|
if (NS_SUCCEEDED(rv) && isCollapsed)
|
||||||
|
return editor->DeleteSelection(nsIEditor::eNext);
|
||||||
|
}
|
||||||
|
return editor->Copy();
|
||||||
|
}
|
||||||
|
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsPasteCommand::IsCommandEnabled(const PRUnichar *aCommand, nsISupports * refCon, PRBool *outCmdEnabled)
|
nsPasteCommand::IsCommandEnabled(const PRUnichar *aCommand, nsISupports * refCon, PRBool *outCmdEnabled)
|
||||||
{
|
{
|
||||||
|
|
|
@ -60,7 +60,9 @@ NS_DECL_EDITOR_COMMAND(nsUndoCommand)
|
||||||
NS_DECL_EDITOR_COMMAND(nsRedoCommand)
|
NS_DECL_EDITOR_COMMAND(nsRedoCommand)
|
||||||
|
|
||||||
NS_DECL_EDITOR_COMMAND(nsCutCommand)
|
NS_DECL_EDITOR_COMMAND(nsCutCommand)
|
||||||
|
NS_DECL_EDITOR_COMMAND(nsCutOrDeleteCommand)
|
||||||
NS_DECL_EDITOR_COMMAND(nsCopyCommand)
|
NS_DECL_EDITOR_COMMAND(nsCopyCommand)
|
||||||
|
NS_DECL_EDITOR_COMMAND(nsCopyOrDeleteCommand)
|
||||||
NS_DECL_EDITOR_COMMAND(nsPasteCommand)
|
NS_DECL_EDITOR_COMMAND(nsPasteCommand)
|
||||||
NS_DECL_EDITOR_COMMAND(nsDeleteCommand)
|
NS_DECL_EDITOR_COMMAND(nsDeleteCommand)
|
||||||
NS_DECL_EDITOR_COMMAND(nsSelectAllCommand)
|
NS_DECL_EDITOR_COMMAND(nsSelectAllCommand)
|
||||||
|
|
|
@ -132,7 +132,9 @@ nsresult nsEditorController::RegisterEditorCommands(nsIControllerCommandManager
|
||||||
NS_REGISTER_ONE_COMMAND(nsRedoCommand, "cmd_redo");
|
NS_REGISTER_ONE_COMMAND(nsRedoCommand, "cmd_redo");
|
||||||
|
|
||||||
NS_REGISTER_ONE_COMMAND(nsCutCommand, "cmd_cut");
|
NS_REGISTER_ONE_COMMAND(nsCutCommand, "cmd_cut");
|
||||||
|
NS_REGISTER_ONE_COMMAND(nsCutOrDeleteCommand, "cmd_cutOrDelete");
|
||||||
NS_REGISTER_ONE_COMMAND(nsCopyCommand, "cmd_copy");
|
NS_REGISTER_ONE_COMMAND(nsCopyCommand, "cmd_copy");
|
||||||
|
NS_REGISTER_ONE_COMMAND(nsCopyOrDeleteCommand, "cmd_copyOrDelete");
|
||||||
NS_REGISTER_ONE_COMMAND(nsSelectAllCommand, "cmd_selectAll");
|
NS_REGISTER_ONE_COMMAND(nsSelectAllCommand, "cmd_selectAll");
|
||||||
|
|
||||||
NS_REGISTER_ONE_COMMAND(nsPasteCommand, "cmd_paste");
|
NS_REGISTER_ONE_COMMAND(nsPasteCommand, "cmd_paste");
|
||||||
|
|
|
@ -620,7 +620,7 @@ NS_IMETHODIMP nsHTMLEditor::InsertFromTransferable(nsITransferable *transferable
|
||||||
nsAutoTxnsConserveSelection dontSpazMySelection(this);
|
nsAutoTxnsConserveSelection dontSpazMySelection(this);
|
||||||
nsAutoString flavor, stuffToPaste;
|
nsAutoString flavor, stuffToPaste;
|
||||||
flavor.AssignWithConversion( bestFlavor ); // just so we can use flavor.Equals()
|
flavor.AssignWithConversion( bestFlavor ); // just so we can use flavor.Equals()
|
||||||
#ifdef DEBUG_akkana
|
#ifdef DEBUG_clipboard
|
||||||
printf("Got flavor [%s]\n", bestFlavor);
|
printf("Got flavor [%s]\n", bestFlavor);
|
||||||
#endif
|
#endif
|
||||||
if (flavor.EqualsWithConversion(kHTMLMime))
|
if (flavor.EqualsWithConversion(kHTMLMime))
|
||||||
|
@ -1289,7 +1289,7 @@ NS_IMETHODIMP nsHTMLEditor::PasteAsPlaintextQuotation(PRInt32 aSelectionType)
|
||||||
#endif
|
#endif
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
#ifdef DEBUG_akkana
|
#ifdef DEBUG_clipboard
|
||||||
printf("Got flavor [%s]\n", flav);
|
printf("Got flavor [%s]\n", flav);
|
||||||
#endif
|
#endif
|
||||||
nsAutoString flavor; flavor.AssignWithConversion(flav);
|
nsAutoString flavor; flavor.AssignWithConversion(flav);
|
||||||
|
|
|
@ -2602,110 +2602,7 @@ nsHTMLEditor::GetEmbeddedObjects(nsISupportsArray** aNodeList)
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Undo, Redo, Cut, CanCut, Copy, CanCopy, all inherited from nsPlaintextEditor
|
||||||
NS_IMETHODIMP
|
|
||||||
nsHTMLEditor::Undo(PRUint32 aCount)
|
|
||||||
{
|
|
||||||
ForceCompositionEnd();
|
|
||||||
nsresult result = NS_OK;
|
|
||||||
|
|
||||||
nsAutoRules beginRulesSniffing(this, kOpUndo, nsIEditor::eNone);
|
|
||||||
|
|
||||||
nsTextRulesInfo ruleInfo(nsTextEditRules::kUndo);
|
|
||||||
nsCOMPtr<nsISelection> selection;
|
|
||||||
GetSelection(getter_AddRefs(selection));
|
|
||||||
PRBool cancel, handled;
|
|
||||||
result = mRules->WillDoAction(selection, &ruleInfo, &cancel, &handled);
|
|
||||||
|
|
||||||
if (!cancel && NS_SUCCEEDED(result))
|
|
||||||
{
|
|
||||||
result = nsEditor::Undo(aCount);
|
|
||||||
result = mRules->DidDoAction(selection, &ruleInfo, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsHTMLEditor::Redo(PRUint32 aCount)
|
|
||||||
{
|
|
||||||
nsresult result = NS_OK;
|
|
||||||
|
|
||||||
nsAutoRules beginRulesSniffing(this, kOpRedo, nsIEditor::eNone);
|
|
||||||
|
|
||||||
nsTextRulesInfo ruleInfo(nsTextEditRules::kRedo);
|
|
||||||
nsCOMPtr<nsISelection> selection;
|
|
||||||
GetSelection(getter_AddRefs(selection));
|
|
||||||
PRBool cancel, handled;
|
|
||||||
result = mRules->WillDoAction(selection, &ruleInfo, &cancel, &handled);
|
|
||||||
|
|
||||||
if (!cancel && NS_SUCCEEDED(result))
|
|
||||||
{
|
|
||||||
result = nsEditor::Redo(aCount);
|
|
||||||
result = mRules->DidDoAction(selection, &ruleInfo, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsHTMLEditor::Cut()
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsISelection> selection;
|
|
||||||
nsresult res = GetSelection(getter_AddRefs(selection));
|
|
||||||
if (!NS_SUCCEEDED(res))
|
|
||||||
return res;
|
|
||||||
|
|
||||||
PRBool isCollapsed;
|
|
||||||
if (NS_SUCCEEDED(selection->GetIsCollapsed(&isCollapsed)) && isCollapsed)
|
|
||||||
return NS_ERROR_NOT_AVAILABLE;
|
|
||||||
|
|
||||||
res = Copy();
|
|
||||||
if (NS_SUCCEEDED(res))
|
|
||||||
res = DeleteSelection(eNone);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsHTMLEditor::CanCut(PRBool &aCanCut)
|
|
||||||
{
|
|
||||||
aCanCut = PR_FALSE;
|
|
||||||
|
|
||||||
nsCOMPtr<nsISelection> selection;
|
|
||||||
nsresult res = GetSelection(getter_AddRefs(selection));
|
|
||||||
if (NS_FAILED(res)) return res;
|
|
||||||
|
|
||||||
PRBool isCollapsed;
|
|
||||||
res = selection->GetIsCollapsed(&isCollapsed);
|
|
||||||
if (NS_FAILED(res)) return res;
|
|
||||||
|
|
||||||
aCanCut = !isCollapsed && IsModifiable();
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsHTMLEditor::Copy()
|
|
||||||
{
|
|
||||||
if (!mPresShellWeak) return NS_ERROR_NOT_INITIALIZED;
|
|
||||||
nsCOMPtr<nsIPresShell> ps = do_QueryReferent(mPresShellWeak);
|
|
||||||
if (!ps) return NS_ERROR_NOT_INITIALIZED;
|
|
||||||
return ps->DoCopy();
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsHTMLEditor::CanCopy(PRBool &aCanCopy)
|
|
||||||
{
|
|
||||||
aCanCopy = PR_FALSE;
|
|
||||||
|
|
||||||
nsCOMPtr<nsISelection> selection;
|
|
||||||
nsresult res = GetSelection(getter_AddRefs(selection));
|
|
||||||
if (NS_FAILED(res)) return res;
|
|
||||||
|
|
||||||
PRBool isCollapsed;
|
|
||||||
res = selection->GetIsCollapsed(&isCollapsed);
|
|
||||||
if (NS_FAILED(res)) return res;
|
|
||||||
|
|
||||||
aCanCopy = !isCollapsed;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static nsresult SetSelectionAroundHeadChildren(nsCOMPtr<nsISelection> aSelection, nsWeakPtr aDocWeak)
|
static nsresult SetSelectionAroundHeadChildren(nsCOMPtr<nsISelection> aSelection, nsWeakPtr aDocWeak)
|
||||||
{
|
{
|
||||||
|
|
|
@ -249,13 +249,6 @@ public:
|
||||||
NS_IMETHOD GetFlags(PRUint32 *aFlags);
|
NS_IMETHOD GetFlags(PRUint32 *aFlags);
|
||||||
NS_IMETHOD SetFlags(PRUint32 aFlags);
|
NS_IMETHOD SetFlags(PRUint32 aFlags);
|
||||||
|
|
||||||
NS_IMETHOD Undo(PRUint32 aCount);
|
|
||||||
NS_IMETHOD Redo(PRUint32 aCount);
|
|
||||||
|
|
||||||
NS_IMETHOD Cut();
|
|
||||||
NS_IMETHOD CanCut(PRBool &aCanCut);
|
|
||||||
NS_IMETHOD Copy();
|
|
||||||
NS_IMETHOD CanCopy(PRBool &aCanCopy);
|
|
||||||
NS_IMETHOD Paste(PRInt32 aSelectionType);
|
NS_IMETHOD Paste(PRInt32 aSelectionType);
|
||||||
NS_IMETHOD CanPaste(PRInt32 aSelectionType, PRBool &aCanPaste);
|
NS_IMETHOD CanPaste(PRInt32 aSelectionType, PRBool &aCanPaste);
|
||||||
|
|
||||||
|
|
|
@ -176,7 +176,7 @@ NS_IMETHODIMP PlaceholderTxn::Merge(PRBool *aDidMerge, nsITransaction *aTransact
|
||||||
// efficiency hack: no need to remember selection here, as we haven't yet
|
// efficiency hack: no need to remember selection here, as we haven't yet
|
||||||
// finished the inital batch and we know we will be told when the batch ends.
|
// finished the inital batch and we know we will be told when the batch ends.
|
||||||
// we can remeber the selection then.
|
// we can remeber the selection then.
|
||||||
if (gNoisy) { printf("Placeholder txn assimilated %p\n", aTransaction); }
|
if (gNoisy) { printf("Placeholder txn assimilated %p\n", (void*)aTransaction); }
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // merge typing or IME or deletion transactions if the selection matches
|
{ // merge typing or IME or deletion transactions if the selection matches
|
||||||
|
|
|
@ -118,6 +118,37 @@ nsCutCommand::DoCommand(const PRUnichar *aCommand, nsISupports * refCon)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsCutOrDeleteCommand::IsCommandEnabled(const PRUnichar *aCommand, nsISupports * refCon, PRBool *outCmdEnabled)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon);
|
||||||
|
*outCmdEnabled = (editor != nsnull);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsCutOrDeleteCommand::DoCommand(const PRUnichar *aCommand, nsISupports * refCon)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon);
|
||||||
|
if (editor)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsISelection> selection;
|
||||||
|
nsresult rv = editor->GetSelection(getter_AddRefs(selection));
|
||||||
|
if (NS_SUCCEEDED(rv) && selection)
|
||||||
|
{
|
||||||
|
PRBool isCollapsed;
|
||||||
|
rv = selection->GetIsCollapsed(&isCollapsed);
|
||||||
|
if (NS_SUCCEEDED(rv) && isCollapsed)
|
||||||
|
return editor->DeleteSelection(nsIEditor::eNext);
|
||||||
|
}
|
||||||
|
return editor->Cut();
|
||||||
|
}
|
||||||
|
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsCopyCommand::IsCommandEnabled(const PRUnichar *aCommand, nsISupports * refCon, PRBool *outCmdEnabled)
|
nsCopyCommand::IsCommandEnabled(const PRUnichar *aCommand, nsISupports * refCon, PRBool *outCmdEnabled)
|
||||||
{
|
{
|
||||||
|
@ -141,6 +172,37 @@ nsCopyCommand::DoCommand(const PRUnichar *aCommand, nsISupports * refCon)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsCopyOrDeleteCommand::IsCommandEnabled(const PRUnichar *aCommand, nsISupports * refCon, PRBool *outCmdEnabled)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon);
|
||||||
|
*outCmdEnabled = (editor != nsnull);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsCopyOrDeleteCommand::DoCommand(const PRUnichar *aCommand, nsISupports * refCon)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIEditor> editor = do_QueryInterface(refCon);
|
||||||
|
if (editor)
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsISelection> selection;
|
||||||
|
nsresult rv = editor->GetSelection(getter_AddRefs(selection));
|
||||||
|
if (NS_SUCCEEDED(rv) && selection)
|
||||||
|
{
|
||||||
|
PRBool isCollapsed;
|
||||||
|
rv = selection->GetIsCollapsed(&isCollapsed);
|
||||||
|
if (NS_SUCCEEDED(rv) && isCollapsed)
|
||||||
|
return editor->DeleteSelection(nsIEditor::eNext);
|
||||||
|
}
|
||||||
|
return editor->Copy();
|
||||||
|
}
|
||||||
|
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsPasteCommand::IsCommandEnabled(const PRUnichar *aCommand, nsISupports * refCon, PRBool *outCmdEnabled)
|
nsPasteCommand::IsCommandEnabled(const PRUnichar *aCommand, nsISupports * refCon, PRBool *outCmdEnabled)
|
||||||
{
|
{
|
||||||
|
|
|
@ -60,7 +60,9 @@ NS_DECL_EDITOR_COMMAND(nsUndoCommand)
|
||||||
NS_DECL_EDITOR_COMMAND(nsRedoCommand)
|
NS_DECL_EDITOR_COMMAND(nsRedoCommand)
|
||||||
|
|
||||||
NS_DECL_EDITOR_COMMAND(nsCutCommand)
|
NS_DECL_EDITOR_COMMAND(nsCutCommand)
|
||||||
|
NS_DECL_EDITOR_COMMAND(nsCutOrDeleteCommand)
|
||||||
NS_DECL_EDITOR_COMMAND(nsCopyCommand)
|
NS_DECL_EDITOR_COMMAND(nsCopyCommand)
|
||||||
|
NS_DECL_EDITOR_COMMAND(nsCopyOrDeleteCommand)
|
||||||
NS_DECL_EDITOR_COMMAND(nsPasteCommand)
|
NS_DECL_EDITOR_COMMAND(nsPasteCommand)
|
||||||
NS_DECL_EDITOR_COMMAND(nsDeleteCommand)
|
NS_DECL_EDITOR_COMMAND(nsDeleteCommand)
|
||||||
NS_DECL_EDITOR_COMMAND(nsSelectAllCommand)
|
NS_DECL_EDITOR_COMMAND(nsSelectAllCommand)
|
||||||
|
|
|
@ -132,7 +132,9 @@ nsresult nsEditorController::RegisterEditorCommands(nsIControllerCommandManager
|
||||||
NS_REGISTER_ONE_COMMAND(nsRedoCommand, "cmd_redo");
|
NS_REGISTER_ONE_COMMAND(nsRedoCommand, "cmd_redo");
|
||||||
|
|
||||||
NS_REGISTER_ONE_COMMAND(nsCutCommand, "cmd_cut");
|
NS_REGISTER_ONE_COMMAND(nsCutCommand, "cmd_cut");
|
||||||
|
NS_REGISTER_ONE_COMMAND(nsCutOrDeleteCommand, "cmd_cutOrDelete");
|
||||||
NS_REGISTER_ONE_COMMAND(nsCopyCommand, "cmd_copy");
|
NS_REGISTER_ONE_COMMAND(nsCopyCommand, "cmd_copy");
|
||||||
|
NS_REGISTER_ONE_COMMAND(nsCopyOrDeleteCommand, "cmd_copyOrDelete");
|
||||||
NS_REGISTER_ONE_COMMAND(nsSelectAllCommand, "cmd_selectAll");
|
NS_REGISTER_ONE_COMMAND(nsSelectAllCommand, "cmd_selectAll");
|
||||||
|
|
||||||
NS_REGISTER_ONE_COMMAND(nsPasteCommand, "cmd_paste");
|
NS_REGISTER_ONE_COMMAND(nsPasteCommand, "cmd_paste");
|
||||||
|
|
|
@ -620,7 +620,7 @@ NS_IMETHODIMP nsHTMLEditor::InsertFromTransferable(nsITransferable *transferable
|
||||||
nsAutoTxnsConserveSelection dontSpazMySelection(this);
|
nsAutoTxnsConserveSelection dontSpazMySelection(this);
|
||||||
nsAutoString flavor, stuffToPaste;
|
nsAutoString flavor, stuffToPaste;
|
||||||
flavor.AssignWithConversion( bestFlavor ); // just so we can use flavor.Equals()
|
flavor.AssignWithConversion( bestFlavor ); // just so we can use flavor.Equals()
|
||||||
#ifdef DEBUG_akkana
|
#ifdef DEBUG_clipboard
|
||||||
printf("Got flavor [%s]\n", bestFlavor);
|
printf("Got flavor [%s]\n", bestFlavor);
|
||||||
#endif
|
#endif
|
||||||
if (flavor.EqualsWithConversion(kHTMLMime))
|
if (flavor.EqualsWithConversion(kHTMLMime))
|
||||||
|
@ -1289,7 +1289,7 @@ NS_IMETHODIMP nsHTMLEditor::PasteAsPlaintextQuotation(PRInt32 aSelectionType)
|
||||||
#endif
|
#endif
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
#ifdef DEBUG_akkana
|
#ifdef DEBUG_clipboard
|
||||||
printf("Got flavor [%s]\n", flav);
|
printf("Got flavor [%s]\n", flav);
|
||||||
#endif
|
#endif
|
||||||
nsAutoString flavor; flavor.AssignWithConversion(flav);
|
nsAutoString flavor; flavor.AssignWithConversion(flav);
|
||||||
|
|
|
@ -2602,110 +2602,7 @@ nsHTMLEditor::GetEmbeddedObjects(nsISupportsArray** aNodeList)
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Undo, Redo, Cut, CanCut, Copy, CanCopy, all inherited from nsPlaintextEditor
|
||||||
NS_IMETHODIMP
|
|
||||||
nsHTMLEditor::Undo(PRUint32 aCount)
|
|
||||||
{
|
|
||||||
ForceCompositionEnd();
|
|
||||||
nsresult result = NS_OK;
|
|
||||||
|
|
||||||
nsAutoRules beginRulesSniffing(this, kOpUndo, nsIEditor::eNone);
|
|
||||||
|
|
||||||
nsTextRulesInfo ruleInfo(nsTextEditRules::kUndo);
|
|
||||||
nsCOMPtr<nsISelection> selection;
|
|
||||||
GetSelection(getter_AddRefs(selection));
|
|
||||||
PRBool cancel, handled;
|
|
||||||
result = mRules->WillDoAction(selection, &ruleInfo, &cancel, &handled);
|
|
||||||
|
|
||||||
if (!cancel && NS_SUCCEEDED(result))
|
|
||||||
{
|
|
||||||
result = nsEditor::Undo(aCount);
|
|
||||||
result = mRules->DidDoAction(selection, &ruleInfo, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsHTMLEditor::Redo(PRUint32 aCount)
|
|
||||||
{
|
|
||||||
nsresult result = NS_OK;
|
|
||||||
|
|
||||||
nsAutoRules beginRulesSniffing(this, kOpRedo, nsIEditor::eNone);
|
|
||||||
|
|
||||||
nsTextRulesInfo ruleInfo(nsTextEditRules::kRedo);
|
|
||||||
nsCOMPtr<nsISelection> selection;
|
|
||||||
GetSelection(getter_AddRefs(selection));
|
|
||||||
PRBool cancel, handled;
|
|
||||||
result = mRules->WillDoAction(selection, &ruleInfo, &cancel, &handled);
|
|
||||||
|
|
||||||
if (!cancel && NS_SUCCEEDED(result))
|
|
||||||
{
|
|
||||||
result = nsEditor::Redo(aCount);
|
|
||||||
result = mRules->DidDoAction(selection, &ruleInfo, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsHTMLEditor::Cut()
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsISelection> selection;
|
|
||||||
nsresult res = GetSelection(getter_AddRefs(selection));
|
|
||||||
if (!NS_SUCCEEDED(res))
|
|
||||||
return res;
|
|
||||||
|
|
||||||
PRBool isCollapsed;
|
|
||||||
if (NS_SUCCEEDED(selection->GetIsCollapsed(&isCollapsed)) && isCollapsed)
|
|
||||||
return NS_ERROR_NOT_AVAILABLE;
|
|
||||||
|
|
||||||
res = Copy();
|
|
||||||
if (NS_SUCCEEDED(res))
|
|
||||||
res = DeleteSelection(eNone);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsHTMLEditor::CanCut(PRBool &aCanCut)
|
|
||||||
{
|
|
||||||
aCanCut = PR_FALSE;
|
|
||||||
|
|
||||||
nsCOMPtr<nsISelection> selection;
|
|
||||||
nsresult res = GetSelection(getter_AddRefs(selection));
|
|
||||||
if (NS_FAILED(res)) return res;
|
|
||||||
|
|
||||||
PRBool isCollapsed;
|
|
||||||
res = selection->GetIsCollapsed(&isCollapsed);
|
|
||||||
if (NS_FAILED(res)) return res;
|
|
||||||
|
|
||||||
aCanCut = !isCollapsed && IsModifiable();
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsHTMLEditor::Copy()
|
|
||||||
{
|
|
||||||
if (!mPresShellWeak) return NS_ERROR_NOT_INITIALIZED;
|
|
||||||
nsCOMPtr<nsIPresShell> ps = do_QueryReferent(mPresShellWeak);
|
|
||||||
if (!ps) return NS_ERROR_NOT_INITIALIZED;
|
|
||||||
return ps->DoCopy();
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP nsHTMLEditor::CanCopy(PRBool &aCanCopy)
|
|
||||||
{
|
|
||||||
aCanCopy = PR_FALSE;
|
|
||||||
|
|
||||||
nsCOMPtr<nsISelection> selection;
|
|
||||||
nsresult res = GetSelection(getter_AddRefs(selection));
|
|
||||||
if (NS_FAILED(res)) return res;
|
|
||||||
|
|
||||||
PRBool isCollapsed;
|
|
||||||
res = selection->GetIsCollapsed(&isCollapsed);
|
|
||||||
if (NS_FAILED(res)) return res;
|
|
||||||
|
|
||||||
aCanCopy = !isCollapsed;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static nsresult SetSelectionAroundHeadChildren(nsCOMPtr<nsISelection> aSelection, nsWeakPtr aDocWeak)
|
static nsresult SetSelectionAroundHeadChildren(nsCOMPtr<nsISelection> aSelection, nsWeakPtr aDocWeak)
|
||||||
{
|
{
|
||||||
|
|
|
@ -249,13 +249,6 @@ public:
|
||||||
NS_IMETHOD GetFlags(PRUint32 *aFlags);
|
NS_IMETHOD GetFlags(PRUint32 *aFlags);
|
||||||
NS_IMETHOD SetFlags(PRUint32 aFlags);
|
NS_IMETHOD SetFlags(PRUint32 aFlags);
|
||||||
|
|
||||||
NS_IMETHOD Undo(PRUint32 aCount);
|
|
||||||
NS_IMETHOD Redo(PRUint32 aCount);
|
|
||||||
|
|
||||||
NS_IMETHOD Cut();
|
|
||||||
NS_IMETHOD CanCut(PRBool &aCanCut);
|
|
||||||
NS_IMETHOD Copy();
|
|
||||||
NS_IMETHOD CanCopy(PRBool &aCanCopy);
|
|
||||||
NS_IMETHOD Paste(PRInt32 aSelectionType);
|
NS_IMETHOD Paste(PRInt32 aSelectionType);
|
||||||
NS_IMETHOD CanPaste(PRInt32 aSelectionType, PRBool &aCanPaste);
|
NS_IMETHOD CanPaste(PRInt32 aSelectionType, PRBool &aCanPaste);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче