mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-19 07:26:26 +00:00

Previously we supported insertParagraph as a synonym for formatBlock "p", which is both useless and incompatible with all other browsers. Edge's behavior doesn't look useful and looks redundant with insertHTML (although it matches the name nicely, probably because they invented the command). Blink/WebKit treat it the same as hitting Enter, which is useful for cross-browser testing until we get synthesizeKey() in wpt. At the same time, I added insertLineBreak, which Blink/WebKit support with the same functionality as pressing Shift-Enter. The new event.html failures are spurious -- we used to pass by mistake because we didn't support insertlinebreak at all. insertlinebreak.html has only new passes, no new failures, although it's not clear on the diff. MozReview-Commit-ID: 16oPcxXwGcj
107 lines
3.7 KiB
C++
107 lines
3.7 KiB
C++
/* -*- 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 EditorCommands_h_
|
|
#define EditorCommands_h_
|
|
|
|
#include "nsIControllerCommand.h"
|
|
#include "nsISupportsImpl.h"
|
|
#include "nscore.h"
|
|
|
|
class nsICommandParams;
|
|
class nsISupports;
|
|
|
|
namespace mozilla {
|
|
|
|
/**
|
|
* This is a virtual base class for commands registered with the editor
|
|
* controller. Note that such commands can be shared by more than on editor
|
|
* instance, so MUST be stateless. Any state must be stored via the refCon
|
|
* (an nsIEditor).
|
|
*/
|
|
|
|
class EditorCommandBase : public nsIControllerCommand
|
|
{
|
|
public:
|
|
EditorCommandBase();
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
NS_IMETHOD IsCommandEnabled(const char* aCommandName,
|
|
nsISupports* aCommandRefCon,
|
|
bool* aIsEnabled) override = 0;
|
|
NS_IMETHOD DoCommand(const char* aCommandName,
|
|
nsISupports* aCommandRefCon) override = 0;
|
|
|
|
protected:
|
|
virtual ~EditorCommandBase() {}
|
|
};
|
|
|
|
|
|
#define NS_DECL_EDITOR_COMMAND(_cmd) \
|
|
class _cmd final : public EditorCommandBase \
|
|
{ \
|
|
public: \
|
|
NS_IMETHOD IsCommandEnabled(const char* aCommandName, \
|
|
nsISupports* aCommandRefCon, \
|
|
bool* aIsEnabled) override; \
|
|
NS_IMETHOD DoCommand(const char* aCommandName, \
|
|
nsISupports* aCommandRefCon) override; \
|
|
NS_IMETHOD DoCommandParams(const char* aCommandName, \
|
|
nsICommandParams* aParams, \
|
|
nsISupports* aCommandRefCon) override; \
|
|
NS_IMETHOD GetCommandStateParams(const char* aCommandName, \
|
|
nsICommandParams* aParams, \
|
|
nsISupports* aCommandRefCon) override; \
|
|
};
|
|
|
|
// basic editor commands
|
|
NS_DECL_EDITOR_COMMAND(UndoCommand)
|
|
NS_DECL_EDITOR_COMMAND(RedoCommand)
|
|
NS_DECL_EDITOR_COMMAND(ClearUndoCommand)
|
|
|
|
NS_DECL_EDITOR_COMMAND(CutCommand)
|
|
NS_DECL_EDITOR_COMMAND(CutOrDeleteCommand)
|
|
NS_DECL_EDITOR_COMMAND(CopyCommand)
|
|
NS_DECL_EDITOR_COMMAND(CopyOrDeleteCommand)
|
|
NS_DECL_EDITOR_COMMAND(CopyAndCollapseToEndCommand)
|
|
NS_DECL_EDITOR_COMMAND(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(SelectionMoveCommands)
|
|
|
|
// Insert content commands
|
|
NS_DECL_EDITOR_COMMAND(InsertPlaintextCommand)
|
|
NS_DECL_EDITOR_COMMAND(InsertParagraphCommand)
|
|
NS_DECL_EDITOR_COMMAND(InsertLineBreakCommand)
|
|
NS_DECL_EDITOR_COMMAND(PasteQuotationCommand)
|
|
|
|
|
|
#if 0
|
|
// template for new command
|
|
NS_IMETHODIMP
|
|
FooCommand::IsCommandEnabled(const char* aCommandName,
|
|
nsISupports* aCommandRefCon,
|
|
bool* aIsEnabled)
|
|
{
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
FooCommand::DoCommand(const char* aCommandName,
|
|
const nsAString& aCommandParams,
|
|
nsISupports* aCommandRefCon)
|
|
{
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
}
|
|
#endif
|
|
|
|
} // namespace mozilla
|
|
|
|
#endif // #ifndef EditorCommands_h_
|