mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
Bug 1549661 - part 1: Create EditorCommand::DoCommandParam(Command aCommand, TextEditor& aTextEditor)
and make it just call DoCommand()
r=m_kato
Most `EditorCommand` classes don't require additional params for executing a command. All of them just calls their `DoCommand()` or returns same result. So, we can create new virtual method, `EditorCommand::DoCommandParam(Command aCommand, TextEditor& aTextEditor)`, which just delegates to `DoCommand()`. This patch adds some undeclared commands but which are handled by `EditorCommand` subclasses, and changes `CommandInt` type from `int8_t` to `uint8_t` since the count of `Command` items becomes over 128. Differential Revision: https://phabricator.services.mozilla.com/D30495 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
a93a98c46e
commit
ef7e3647d8
@ -84,6 +84,17 @@ EditorCommand::DoCommandParams(const char* aCommandName,
|
||||
} else {
|
||||
command = GetInternalCommand(aCommandName);
|
||||
}
|
||||
|
||||
EditorCommandParamType paramType = EditorCommand::GetParamType(command);
|
||||
if (paramType == EditorCommandParamType::None) {
|
||||
nsresult rv =
|
||||
DoCommandParam(command, MOZ_KnownLive(*editor->AsTextEditor()));
|
||||
NS_WARNING_ASSERTION(
|
||||
NS_SUCCEEDED(rv),
|
||||
"Failed to do command from nsIControllerCommand::DoCommandParams()");
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult rv = DoCommandParams(command, MOZ_KnownLive(params),
|
||||
MOZ_KnownLive(*editor->AsTextEditor()));
|
||||
NS_WARNING_ASSERTION(
|
||||
@ -137,12 +148,6 @@ nsresult UndoCommand::DoCommand(Command aCommand,
|
||||
return aTextEditor.Undo(1);
|
||||
}
|
||||
|
||||
nsresult UndoCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult UndoCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -169,12 +174,6 @@ nsresult RedoCommand::DoCommand(Command aCommand,
|
||||
return aTextEditor.Redo(1);
|
||||
}
|
||||
|
||||
nsresult RedoCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult RedoCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -201,11 +200,6 @@ nsresult CutCommand::DoCommand(Command aCommand,
|
||||
return aTextEditor.Cut();
|
||||
}
|
||||
|
||||
nsresult CutCommand::DoCommandParams(Command aCommand, nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult CutCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -241,12 +235,6 @@ nsresult CutOrDeleteCommand::DoCommand(Command aCommand,
|
||||
return aTextEditor.Cut();
|
||||
}
|
||||
|
||||
nsresult CutOrDeleteCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult CutOrDeleteCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -273,12 +261,6 @@ nsresult CopyCommand::DoCommand(Command aCommand,
|
||||
return aTextEditor.Copy();
|
||||
}
|
||||
|
||||
nsresult CopyCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult CopyCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -314,12 +296,6 @@ nsresult CopyOrDeleteCommand::DoCommand(Command aCommand,
|
||||
return aTextEditor.Copy();
|
||||
}
|
||||
|
||||
nsresult CopyOrDeleteCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult CopyOrDeleteCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -347,12 +323,6 @@ nsresult PasteCommand::DoCommand(Command aCommand,
|
||||
return aTextEditor.PasteAsAction(nsIClipboard::kGlobalClipboard, true);
|
||||
}
|
||||
|
||||
nsresult PasteCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult PasteCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -446,11 +416,6 @@ nsresult SwitchTextDirectionCommand::DoCommand(Command aCommand,
|
||||
return aTextEditor.ToggleTextDirection();
|
||||
}
|
||||
|
||||
nsresult SwitchTextDirectionCommand::DoCommandParams(
|
||||
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult SwitchTextDirectionCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -519,12 +484,6 @@ nsresult DeleteCommand::DoCommand(Command aCommand,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult DeleteCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult DeleteCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -559,12 +518,6 @@ nsresult SelectAllCommand::DoCommand(Command aCommand,
|
||||
return aTextEditor.SelectAll();
|
||||
}
|
||||
|
||||
nsresult SelectAllCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult SelectAllCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -696,12 +649,6 @@ nsresult SelectionMoveCommands::DoCommand(Command aCommand,
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsresult SelectionMoveCommands::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult SelectionMoveCommands::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -790,11 +737,6 @@ nsresult InsertParagraphCommand::DoCommand(Command aCommand,
|
||||
return htmlEditor->InsertParagraphSeparatorAsAction();
|
||||
}
|
||||
|
||||
nsresult InsertParagraphCommand::DoCommandParams(
|
||||
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult InsertParagraphCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -825,11 +767,6 @@ nsresult InsertLineBreakCommand::DoCommand(Command aCommand,
|
||||
return MOZ_KnownLive(htmlEditor)->InsertLineBreakAsAction();
|
||||
}
|
||||
|
||||
nsresult InsertLineBreakCommand::DoCommandParams(
|
||||
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult InsertLineBreakCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -862,12 +799,6 @@ nsresult PasteQuotationCommand::DoCommand(Command aCommand,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult PasteQuotationCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult PasteQuotationCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
|
@ -7,6 +7,7 @@
|
||||
#define mozilla_EditorCommands_h
|
||||
|
||||
#include "mozilla/StaticPtr.h"
|
||||
#include "mozilla/TypedEnumBits.h"
|
||||
#include "nsIControllerCommand.h"
|
||||
#include "nsISupportsImpl.h"
|
||||
#include "nsRefPtrHashtable.h"
|
||||
@ -22,6 +23,38 @@ namespace mozilla {
|
||||
class HTMLEditor;
|
||||
class TextEditor;
|
||||
|
||||
/**
|
||||
* EditorCommandParamType tells you that EditorCommand subclasses refer
|
||||
* which type in nsCommandParams (e.g., bool or nsString) or do not refer.
|
||||
* If they refer some types, also set where is in nsCommandParams, e.g.,
|
||||
* whether "state_attribute" or "state_data".
|
||||
*/
|
||||
enum class EditorCommandParamType : uint16_t {
|
||||
// The command does not take params (even if specified, always ignored).
|
||||
None = 0,
|
||||
// The command refers nsCommandParams::GetBool() result.
|
||||
Bool = 1 << 0,
|
||||
// The command refers nsCommandParams::GetString() result.
|
||||
// This may be specified with CString. In such case,
|
||||
// nsCommandParams::GetCString() is preferred.
|
||||
String = 1 << 1,
|
||||
// The command refers nsCommandParams::GetCString() result.
|
||||
CString = 1 << 2,
|
||||
// The command refers nsCommandParams::GetISupports("transferable") result.
|
||||
Transferable = 1 << 3,
|
||||
|
||||
// The command refres "state_attribute" of nsCommandParams when calling
|
||||
// GetBool()/GetString()/GetCString(). This must not be set when the
|
||||
// type is None or Transferable.
|
||||
StateAttribute = 1 << 14,
|
||||
// The command refers "state_data" of nsCommandParams when calling
|
||||
// GetBool()/GetString()/GetCString(). This must not be set when the
|
||||
// type is None or Transferable.
|
||||
StateData = 1 << 15,
|
||||
};
|
||||
|
||||
MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(EditorCommandParamType)
|
||||
|
||||
/**
|
||||
* This is a base class for commands registered with the editor controller.
|
||||
* Note that such commands are designed as singleton classes. So, MUST be
|
||||
@ -32,6 +65,177 @@ class EditorCommand : public nsIControllerCommand {
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
static EditorCommandParamType GetParamType(Command aCommand) {
|
||||
// Keep same order of registration in EditorController.cpp and
|
||||
// HTMLEditorController.cpp.
|
||||
switch (aCommand) {
|
||||
// UndoCommand
|
||||
case Command::HistoryUndo:
|
||||
return EditorCommandParamType::None;
|
||||
// RedoCommand
|
||||
case Command::HistoryRedo:
|
||||
return EditorCommandParamType::None;
|
||||
// CutCommand
|
||||
case Command::Cut:
|
||||
return EditorCommandParamType::None;
|
||||
// CutOrDeleteCommand
|
||||
case Command::CutOrDelete:
|
||||
return EditorCommandParamType::None;
|
||||
// CopyCommand
|
||||
case Command::Copy:
|
||||
return EditorCommandParamType::None;
|
||||
// CopyOrDeleteCommand
|
||||
case Command::CopyOrDelete:
|
||||
return EditorCommandParamType::None;
|
||||
// SelectAllCommand
|
||||
case Command::SelectAll:
|
||||
return EditorCommandParamType::None;
|
||||
// PasteCommand
|
||||
case Command::Paste:
|
||||
return EditorCommandParamType::None;
|
||||
// SwitchTextDirectionCommand
|
||||
case Command::FormatSetBlockTextDirection:
|
||||
return EditorCommandParamType::None;
|
||||
// DeleteCommand
|
||||
case Command::Delete:
|
||||
case Command::DeleteCharBackward:
|
||||
case Command::DeleteCharForward:
|
||||
case Command::DeleteWordBackward:
|
||||
case Command::DeleteWordForward:
|
||||
case Command::DeleteToBeginningOfLine:
|
||||
case Command::DeleteToEndOfLine:
|
||||
return EditorCommandParamType::None;
|
||||
// InsertParagraphCommand
|
||||
case Command::InsertParagraph:
|
||||
return EditorCommandParamType::None;
|
||||
// InsertLineBreakCommand
|
||||
case Command::InsertLineBreak:
|
||||
return EditorCommandParamType::None;
|
||||
// PasteQuotationCommand
|
||||
case Command::PasteAsQuotation:
|
||||
return EditorCommandParamType::None;
|
||||
|
||||
// SelectionMoveCommand
|
||||
case Command::ScrollTop:
|
||||
case Command::ScrollBottom:
|
||||
case Command::MoveTop:
|
||||
case Command::MoveBottom:
|
||||
case Command::SelectTop:
|
||||
case Command::SelectBottom:
|
||||
case Command::LineNext:
|
||||
case Command::LinePrevious:
|
||||
case Command::SelectLineNext:
|
||||
case Command::SelectLinePrevious:
|
||||
case Command::CharPrevious:
|
||||
case Command::CharNext:
|
||||
case Command::SelectCharPrevious:
|
||||
case Command::SelectCharNext:
|
||||
case Command::BeginLine:
|
||||
case Command::EndLine:
|
||||
case Command::SelectBeginLine:
|
||||
case Command::SelectEndLine:
|
||||
case Command::WordPrevious:
|
||||
case Command::WordNext:
|
||||
case Command::SelectWordPrevious:
|
||||
case Command::SelectWordNext:
|
||||
case Command::ScrollPageUp:
|
||||
case Command::ScrollPageDown:
|
||||
case Command::ScrollLineUp:
|
||||
case Command::ScrollLineDown:
|
||||
case Command::MovePageUp:
|
||||
case Command::MovePageDown:
|
||||
case Command::SelectPageUp:
|
||||
case Command::SelectPageDown:
|
||||
case Command::MoveLeft:
|
||||
case Command::MoveRight:
|
||||
case Command::MoveUp:
|
||||
case Command::MoveDown:
|
||||
case Command::MoveLeft2:
|
||||
case Command::MoveRight2:
|
||||
case Command::MoveUp2:
|
||||
case Command::MoveDown2:
|
||||
case Command::SelectLeft:
|
||||
case Command::SelectRight:
|
||||
case Command::SelectUp:
|
||||
case Command::SelectDown:
|
||||
case Command::SelectLeft2:
|
||||
case Command::SelectRight2:
|
||||
case Command::SelectUp2:
|
||||
case Command::SelectDown2:
|
||||
return EditorCommandParamType::None;
|
||||
// PasteNoFormattingCommand
|
||||
case Command::PasteWithoutFormat:
|
||||
return EditorCommandParamType::None;
|
||||
|
||||
// DocumentStateCommand
|
||||
case Command::EditorObserverDocumentCreated:
|
||||
case Command::EditorObserverDocumentLocationChanged:
|
||||
case Command::EditorObserverDocumentWillBeDestroyed:
|
||||
return EditorCommandParamType::None;
|
||||
|
||||
// IndentCommand
|
||||
case Command::FormatIndent:
|
||||
return EditorCommandParamType::None;
|
||||
// OutdentCommand
|
||||
case Command::FormatOutdent:
|
||||
return EditorCommandParamType::None;
|
||||
// StyleUpdatingCommand
|
||||
case Command::FormatBold:
|
||||
case Command::FormatItalic:
|
||||
case Command::FormatUnderline:
|
||||
case Command::FormatTeletypeText:
|
||||
case Command::FormatStrikeThrough:
|
||||
case Command::FormatSuperscript:
|
||||
case Command::FormatSubscript:
|
||||
case Command::FormatNoBreak:
|
||||
case Command::FormatEmphasis:
|
||||
case Command::FormatStrong:
|
||||
case Command::FormatCitation:
|
||||
case Command::FormatAbbreviation:
|
||||
case Command::FormatAcronym:
|
||||
case Command::FormatCode:
|
||||
case Command::FormatSample:
|
||||
case Command::FormatVariable:
|
||||
case Command::FormatRemoveLink:
|
||||
return EditorCommandParamType::None;
|
||||
// ListCommand
|
||||
case Command::InsertOrderedList:
|
||||
case Command::InsertUnorderedList:
|
||||
return EditorCommandParamType::None;
|
||||
// ListItemCommand
|
||||
case Command::InsertDefinitionTerm:
|
||||
case Command::InsertDefinitionDetails:
|
||||
return EditorCommandParamType::None;
|
||||
// RemoveListCommand
|
||||
case Command::FormatRemoveList:
|
||||
return EditorCommandParamType::None;
|
||||
// RemoveStylesCommand
|
||||
case Command::FormatRemove:
|
||||
return EditorCommandParamType::None;
|
||||
// IncreaseFontSizeCommand
|
||||
case Command::FormatIncreaseFontSize:
|
||||
return EditorCommandParamType::None;
|
||||
// DecreaseFontSizeCommand
|
||||
case Command::FormatDecreaseFontSize:
|
||||
return EditorCommandParamType::None;
|
||||
case Command::InsertHorizontalRule:
|
||||
return EditorCommandParamType::None;
|
||||
// AbsolutePositioningCommand
|
||||
case Command::FormatAbsolutePosition:
|
||||
return EditorCommandParamType::None;
|
||||
// DecreaseZIndexCommand
|
||||
case Command::FormatDecreaseZIndex:
|
||||
return EditorCommandParamType::None;
|
||||
// IncreaseZIndexCommand
|
||||
case Command::FormatIncreaseZIndex:
|
||||
return EditorCommandParamType::None;
|
||||
|
||||
default:
|
||||
// XXX Treat as Unknown for now
|
||||
return EditorCommandParamType::Transferable;
|
||||
}
|
||||
}
|
||||
|
||||
// nsIControllerCommand methods. Use EditorCommand specific methods instead
|
||||
// for internal use.
|
||||
MOZ_CAN_RUN_SCRIPT_BOUNDARY
|
||||
@ -58,7 +262,11 @@ class EditorCommand : public nsIControllerCommand {
|
||||
TextEditor& aTextEditor) const = 0;
|
||||
MOZ_CAN_RUN_SCRIPT
|
||||
virtual nsresult DoCommandParams(Command aCommand, nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const = 0;
|
||||
TextEditor& aTextEditor) const {
|
||||
MOZ_ASSERT_UNREACHABLE("Wrong method is called");
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param aTextEditor If the context is an editor, should be set to
|
||||
* it. Otherwise, nullptr.
|
||||
@ -72,30 +280,52 @@ class EditorCommand : public nsIControllerCommand {
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const = 0;
|
||||
|
||||
/**
|
||||
* Called only when the result of EditorCommand::GetParamType(aCommand) is
|
||||
* EditorCommandParamType::None.
|
||||
*/
|
||||
MOZ_CAN_RUN_SCRIPT
|
||||
virtual nsresult DoCommandParam(Command aCommand,
|
||||
TextEditor& aTextEditor) const {
|
||||
MOZ_ASSERT_UNREACHABLE("Wrong overload is called");
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
protected:
|
||||
EditorCommand() = default;
|
||||
virtual ~EditorCommand() = default;
|
||||
};
|
||||
|
||||
#define NS_DECL_EDITOR_COMMAND_METHODS(_cmd) \
|
||||
public: \
|
||||
MOZ_CAN_RUN_SCRIPT \
|
||||
virtual bool IsCommandEnabled(Command aCommand, TextEditor* aTextEditor) \
|
||||
const final; \
|
||||
using EditorCommand::IsCommandEnabled; \
|
||||
MOZ_CAN_RUN_SCRIPT \
|
||||
virtual nsresult DoCommand(Command aCommand, TextEditor& aTextEditor) \
|
||||
const final; \
|
||||
using EditorCommand::DoCommand; \
|
||||
#define NS_DECL_EDITOR_COMMAND_COMMON_METHODS \
|
||||
public: \
|
||||
MOZ_CAN_RUN_SCRIPT \
|
||||
virtual bool IsCommandEnabled(Command aCommand, TextEditor* aTextEditor) \
|
||||
const final; \
|
||||
using EditorCommand::IsCommandEnabled; \
|
||||
MOZ_CAN_RUN_SCRIPT \
|
||||
virtual nsresult DoCommand(Command aCommand, TextEditor& aTextEditor) \
|
||||
const final; \
|
||||
using EditorCommand::DoCommand; \
|
||||
MOZ_CAN_RUN_SCRIPT \
|
||||
virtual nsresult GetCommandStateParams( \
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor, \
|
||||
nsIEditingSession* aEditingSession) const final; \
|
||||
using EditorCommand::GetCommandStateParams; \
|
||||
using EditorCommand::DoCommandParam;
|
||||
|
||||
#define NS_DECL_DO_COMMAND_PARAMS \
|
||||
MOZ_CAN_RUN_SCRIPT \
|
||||
virtual nsresult DoCommandParams(Command aCommand, nsCommandParams* aParams, \
|
||||
TextEditor& aTextEditor) const final; \
|
||||
using EditorCommand::DoCommandParams; \
|
||||
MOZ_CAN_RUN_SCRIPT \
|
||||
virtual nsresult GetCommandStateParams( \
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor, \
|
||||
nsIEditingSession* aEditingSession) const final; \
|
||||
using EditorCommand::GetCommandStateParams;
|
||||
using EditorCommand::DoCommandParams;
|
||||
|
||||
#define NS_DECL_DO_COMMAND_PARAM_DELEGATE_TO_DO_COMMAND \
|
||||
public: \
|
||||
MOZ_CAN_RUN_SCRIPT \
|
||||
virtual nsresult DoCommandParam(Command aCommand, TextEditor& aTextEditor) \
|
||||
const final { \
|
||||
return DoCommand(aCommand, aTextEditor); \
|
||||
}
|
||||
|
||||
#define NS_INLINE_DECL_EDITOR_COMMAND_MAKE_SINGLETON(_cmd) \
|
||||
public: \
|
||||
@ -113,7 +343,8 @@ class EditorCommand : public nsIControllerCommand {
|
||||
|
||||
#define NS_DECL_EDITOR_COMMAND(_cmd) \
|
||||
class _cmd final : public EditorCommand { \
|
||||
NS_DECL_EDITOR_COMMAND_METHODS(_cmd) \
|
||||
NS_DECL_EDITOR_COMMAND_COMMON_METHODS \
|
||||
NS_DECL_DO_COMMAND_PARAMS \
|
||||
NS_INLINE_DECL_EDITOR_COMMAND_MAKE_SINGLETON(_cmd) \
|
||||
\
|
||||
protected: \
|
||||
@ -121,27 +352,38 @@ class EditorCommand : public nsIControllerCommand {
|
||||
virtual ~_cmd() = default; \
|
||||
};
|
||||
|
||||
#define NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(_cmd) \
|
||||
class _cmd final : public EditorCommand { \
|
||||
NS_DECL_EDITOR_COMMAND_COMMON_METHODS \
|
||||
NS_DECL_DO_COMMAND_PARAM_DELEGATE_TO_DO_COMMAND \
|
||||
NS_INLINE_DECL_EDITOR_COMMAND_MAKE_SINGLETON(_cmd) \
|
||||
\
|
||||
protected: \
|
||||
_cmd() = default; \
|
||||
virtual ~_cmd() = default; \
|
||||
};
|
||||
|
||||
// basic editor commands
|
||||
NS_DECL_EDITOR_COMMAND(UndoCommand)
|
||||
NS_DECL_EDITOR_COMMAND(RedoCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(UndoCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(RedoCommand)
|
||||
|
||||
NS_DECL_EDITOR_COMMAND(CutCommand)
|
||||
NS_DECL_EDITOR_COMMAND(CutOrDeleteCommand)
|
||||
NS_DECL_EDITOR_COMMAND(CopyCommand)
|
||||
NS_DECL_EDITOR_COMMAND(CopyOrDeleteCommand)
|
||||
NS_DECL_EDITOR_COMMAND(PasteCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(CutCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(CutOrDeleteCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(CopyCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(CopyOrDeleteCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(PasteCommand)
|
||||
NS_DECL_EDITOR_COMMAND(PasteTransferableCommand)
|
||||
NS_DECL_EDITOR_COMMAND(SwitchTextDirectionCommand)
|
||||
NS_DECL_EDITOR_COMMAND(DeleteCommand)
|
||||
NS_DECL_EDITOR_COMMAND(SelectAllCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(SwitchTextDirectionCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(DeleteCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(SelectAllCommand)
|
||||
|
||||
NS_DECL_EDITOR_COMMAND(SelectionMoveCommands)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(SelectionMoveCommands)
|
||||
|
||||
// Insert content commands
|
||||
NS_DECL_EDITOR_COMMAND(InsertPlaintextCommand)
|
||||
NS_DECL_EDITOR_COMMAND(InsertParagraphCommand)
|
||||
NS_DECL_EDITOR_COMMAND(InsertLineBreakCommand)
|
||||
NS_DECL_EDITOR_COMMAND(PasteQuotationCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(InsertParagraphCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(InsertLineBreakCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(PasteQuotationCommand)
|
||||
|
||||
/******************************************************************************
|
||||
* Commands for HTML editor
|
||||
@ -153,7 +395,8 @@ class StateUpdatingCommandBase : public EditorCommand {
|
||||
public:
|
||||
NS_INLINE_DECL_REFCOUNTING_INHERITED(StateUpdatingCommandBase, EditorCommand)
|
||||
|
||||
NS_DECL_EDITOR_COMMAND_METHODS(StateUpdatingCommandBase)
|
||||
NS_DECL_EDITOR_COMMAND_COMMON_METHODS
|
||||
NS_DECL_DO_COMMAND_PARAM_DELEGATE_TO_DO_COMMAND
|
||||
|
||||
protected:
|
||||
StateUpdatingCommandBase() = default;
|
||||
@ -246,7 +489,9 @@ class InsertTagCommand final : public EditorCommand {
|
||||
public:
|
||||
NS_INLINE_DECL_REFCOUNTING_INHERITED(InsertTagCommand, EditorCommand)
|
||||
|
||||
NS_DECL_EDITOR_COMMAND_METHODS(InsertTagCommand)
|
||||
NS_DECL_EDITOR_COMMAND_COMMON_METHODS
|
||||
NS_DECL_DO_COMMAND_PARAM_DELEGATE_TO_DO_COMMAND
|
||||
NS_DECL_DO_COMMAND_PARAMS
|
||||
NS_INLINE_DECL_EDITOR_COMMAND_MAKE_SINGLETON(InsertTagCommand)
|
||||
|
||||
protected:
|
||||
@ -307,7 +552,9 @@ class ListItemCommand final : public StateUpdatingCommandBase {
|
||||
class MultiStateCommandBase : public EditorCommand {
|
||||
public:
|
||||
NS_INLINE_DECL_REFCOUNTING_INHERITED(MultiStateCommandBase, EditorCommand)
|
||||
NS_DECL_EDITOR_COMMAND_METHODS(MultiStateCommandBase)
|
||||
|
||||
NS_DECL_EDITOR_COMMAND_COMMON_METHODS
|
||||
NS_DECL_DO_COMMAND_PARAMS
|
||||
|
||||
protected:
|
||||
MultiStateCommandBase() = default;
|
||||
@ -450,31 +697,34 @@ class AbsolutePositioningCommand final : public StateUpdatingCommandBase {
|
||||
|
||||
// composer commands
|
||||
|
||||
NS_DECL_EDITOR_COMMAND(DocumentStateCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(DocumentStateCommand)
|
||||
NS_DECL_EDITOR_COMMAND(SetDocumentStateCommand)
|
||||
|
||||
NS_DECL_EDITOR_COMMAND(DecreaseZIndexCommand)
|
||||
NS_DECL_EDITOR_COMMAND(IncreaseZIndexCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(DecreaseZIndexCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(IncreaseZIndexCommand)
|
||||
|
||||
// Generic commands
|
||||
|
||||
// Edit menu
|
||||
NS_DECL_EDITOR_COMMAND(PasteNoFormattingCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(PasteNoFormattingCommand)
|
||||
|
||||
// Block transformations
|
||||
NS_DECL_EDITOR_COMMAND(IndentCommand)
|
||||
NS_DECL_EDITOR_COMMAND(OutdentCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(IndentCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(OutdentCommand)
|
||||
|
||||
NS_DECL_EDITOR_COMMAND(RemoveListCommand)
|
||||
NS_DECL_EDITOR_COMMAND(RemoveStylesCommand)
|
||||
NS_DECL_EDITOR_COMMAND(IncreaseFontSizeCommand)
|
||||
NS_DECL_EDITOR_COMMAND(DecreaseFontSizeCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(RemoveListCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(RemoveStylesCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(IncreaseFontSizeCommand)
|
||||
NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE(DecreaseFontSizeCommand)
|
||||
|
||||
// Insert content commands
|
||||
NS_DECL_EDITOR_COMMAND(InsertHTMLCommand)
|
||||
|
||||
#undef NS_DECL_EDITOR_COMMAND
|
||||
#undef NS_DECL_EDITOR_COMMAND_METHODS
|
||||
#undef NS_DECL_EDITOR_COMMAND_FOR_NO_PARAM_WITH_DELEGATE
|
||||
#undef NS_DECL_EDITOR_COMMAND_COMMON_METHODS
|
||||
#undef NS_DECL_DO_COMMAND_PARAMS
|
||||
#undef NS_DECL_DO_COMMAND_PARAM_DELEGATE_TO_DO_COMMAND
|
||||
#undef NS_INLINE_DECL_EDITOR_COMMAND_MAKE_SINGLETON
|
||||
|
||||
} // namespace mozilla
|
||||
|
@ -77,11 +77,6 @@ nsresult StateUpdatingCommandBase::DoCommand(Command aCommand,
|
||||
return ToggleState(MOZ_KnownLive(tagName), MOZ_KnownLive(htmlEditor));
|
||||
}
|
||||
|
||||
nsresult StateUpdatingCommandBase::DoCommandParams(
|
||||
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult StateUpdatingCommandBase::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -129,11 +124,6 @@ nsresult PasteNoFormattingCommand::DoCommand(Command aCommand,
|
||||
->PasteNoFormatting(nsIClipboard::kGlobalClipboard);
|
||||
}
|
||||
|
||||
nsresult PasteNoFormattingCommand::DoCommandParams(
|
||||
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult PasteNoFormattingCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -402,12 +392,6 @@ nsresult RemoveListCommand::DoCommand(Command aCommand,
|
||||
return htmlEditor->RemoveList(EmptyString());
|
||||
}
|
||||
|
||||
nsresult RemoveListCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult RemoveListCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -446,12 +430,6 @@ nsresult IndentCommand::DoCommand(Command aCommand,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult IndentCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult IndentCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -490,12 +468,6 @@ nsresult OutdentCommand::DoCommand(Command aCommand,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult OutdentCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult OutdentCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -985,12 +957,6 @@ nsresult DecreaseZIndexCommand::DoCommand(Command aCommand,
|
||||
return htmlEditor->AddZIndex(-1);
|
||||
}
|
||||
|
||||
nsresult DecreaseZIndexCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult DecreaseZIndexCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -1028,12 +994,6 @@ nsresult IncreaseZIndexCommand::DoCommand(Command aCommand,
|
||||
return htmlEditor->AddZIndex(1);
|
||||
}
|
||||
|
||||
nsresult IncreaseZIndexCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult IncreaseZIndexCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -1069,12 +1029,6 @@ nsresult RemoveStylesCommand::DoCommand(Command aCommand,
|
||||
return MOZ_KnownLive(htmlEditor)->RemoveAllInlineProperties();
|
||||
}
|
||||
|
||||
nsresult RemoveStylesCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult RemoveStylesCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -1110,11 +1064,6 @@ nsresult IncreaseFontSizeCommand::DoCommand(Command aCommand,
|
||||
return MOZ_KnownLive(htmlEditor)->IncreaseFontSize();
|
||||
}
|
||||
|
||||
nsresult IncreaseFontSizeCommand::DoCommandParams(
|
||||
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult IncreaseFontSizeCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -1150,11 +1099,6 @@ nsresult DecreaseFontSizeCommand::DoCommand(Command aCommand,
|
||||
return MOZ_KnownLive(htmlEditor)->DecreaseFontSize();
|
||||
}
|
||||
|
||||
nsresult DecreaseFontSizeCommand::DoCommandParams(
|
||||
Command aCommand, nsCommandParams* aParams, TextEditor& aTextEditor) const {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
|
||||
nsresult DecreaseFontSizeCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
@ -1260,19 +1204,14 @@ nsresult InsertTagCommand::DoCommand(Command aCommand,
|
||||
}
|
||||
nsresult rv =
|
||||
MOZ_KnownLive(htmlEditor)->InsertElementAtSelection(newElement, true);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return rv;
|
||||
}
|
||||
return NS_OK;
|
||||
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "InsertElementAtSelection() failed");
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult InsertTagCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
// inserting an hr shouldn't have an parameters, just call DoCommand for that
|
||||
if (aCommand == Command::InsertHorizontalRule) {
|
||||
return DoCommand(aCommand, aTextEditor);
|
||||
}
|
||||
MOZ_ASSERT(aCommand != Command::InsertHorizontalRule);
|
||||
|
||||
if (NS_WARN_IF(!aParams)) {
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
|
@ -407,12 +407,6 @@ nsresult DocumentStateCommand::DoCommand(Command aCommand,
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
nsresult DocumentStateCommand::DoCommandParams(Command aCommand,
|
||||
nsCommandParams* aParams,
|
||||
TextEditor& aTextEditor) const {
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
nsresult DocumentStateCommand::GetCommandStateParams(
|
||||
Command aCommand, nsCommandParams& aParams, TextEditor* aTextEditor,
|
||||
nsIEditingSession* aEditingSession) const {
|
||||
|
@ -118,6 +118,8 @@ NS_DEFINE_COMMAND(ToggleAbsolutePositionEditor,
|
||||
|
||||
// Commands not mapped from HTMLDocument.execCommand() but available with
|
||||
// command dispatcher and handled in editor.
|
||||
NS_DEFINE_COMMAND(CutOrDelete, cmd_cutOrDelete)
|
||||
NS_DEFINE_COMMAND(CopyOrDelete, cmd_copyOrDelete)
|
||||
NS_DEFINE_COMMAND(EditorObserverDocumentCreated, obs_documentCreated)
|
||||
NS_DEFINE_COMMAND(EditorObserverDocumentLocationChanged,
|
||||
obs_documentLocationChanged)
|
||||
@ -128,9 +130,13 @@ NS_DEFINE_COMMAND(FormatAbsolutePosition, cmd_absPos)
|
||||
NS_DEFINE_COMMAND(FormatAcronym, cmd_acronym)
|
||||
NS_DEFINE_COMMAND(FormatCitation, cmd_cite)
|
||||
NS_DEFINE_COMMAND(FormatCode, cmd_code)
|
||||
NS_DEFINE_COMMAND(FormatDecreaseZIndex, cmd_decreaseZIndex)
|
||||
NS_DEFINE_COMMAND(FormatEmphasis, cmd_em)
|
||||
NS_DEFINE_COMMAND(FormatIncreaseZIndex, cmd_increaseZIndex)
|
||||
NS_DEFINE_COMMAND(FormatNoBreak, cmd_nobreak)
|
||||
NS_DEFINE_COMMAND(FormatRemoveList, cmd_removeList)
|
||||
NS_DEFINE_COMMAND(FormatSample, cmd_samp)
|
||||
NS_DEFINE_COMMAND(FormatSetBlockTextDirection, cmd_switchTextDirection)
|
||||
NS_DEFINE_COMMAND(FormatStrong, cmd_strong)
|
||||
NS_DEFINE_COMMAND(FormatTeletypeText, cmd_tt)
|
||||
NS_DEFINE_COMMAND(FormatVariable, cmd_var)
|
||||
@ -144,6 +150,8 @@ NS_DEFINE_COMMAND(MoveRight, cmd_moveRight)
|
||||
NS_DEFINE_COMMAND(MoveRight2, cmd_moveRight2)
|
||||
NS_DEFINE_COMMAND(MoveUp, cmd_moveUp)
|
||||
NS_DEFINE_COMMAND(MoveUp2, cmd_moveUp2)
|
||||
NS_DEFINE_COMMAND(PasteAsQuotation, cmd_pasteQuote)
|
||||
NS_DEFINE_COMMAND(PasteWithoutFormat, cmd_pasteNoFormatting)
|
||||
NS_DEFINE_COMMAND(SelectDown, cmd_selectDown)
|
||||
NS_DEFINE_COMMAND(SelectDown2, cmd_selectDown2)
|
||||
NS_DEFINE_COMMAND(SelectLeft, cmd_selectLeft)
|
||||
|
@ -206,7 +206,7 @@ inline bool IsDataTransferAvailableOnHTMLEditor(EditorInputType aInputType) {
|
||||
#define NS_DEFINE_COMMAND_WITH_PARAM(aName, aCommandStr, aParam) , aName
|
||||
#define NS_DEFINE_COMMAND_NO_EXEC_COMMAND(aName) , aName
|
||||
|
||||
typedef int8_t CommandInt;
|
||||
typedef uint8_t CommandInt;
|
||||
enum class Command : CommandInt {
|
||||
DoNothing
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user