This source file includes following definitions.
- m_parent
- m_parent
- editingAction
- compositionIfPossible
- setStartingSelection
- setStartingSelection
- setEndingSelection
- setEndingSelection
- setParent
- doReapply
#include "config.h"
#include "core/editing/EditCommand.h"
#include "core/dom/Document.h"
#include "core/dom/NodeTraversal.h"
#include "core/editing/CompositeEditCommand.h"
#include "core/editing/FrameSelection.h"
#include "core/frame/LocalFrame.h"
namespace WebCore {
EditCommand::EditCommand(Document& document)
: m_document(&document)
, m_parent(0)
{
ASSERT(m_document);
ASSERT(m_document->frame());
setStartingSelection(m_document->frame()->selection().selection());
setEndingSelection(m_startingSelection);
}
EditCommand::EditCommand(Document* document, const VisibleSelection& startingSelection, const VisibleSelection& endingSelection)
: m_document(document)
, m_parent(0)
{
ASSERT(m_document);
ASSERT(m_document->frame());
setStartingSelection(startingSelection);
setEndingSelection(endingSelection);
}
EditCommand::~EditCommand()
{
}
EditAction EditCommand::editingAction() const
{
return EditActionUnspecified;
}
static inline EditCommandComposition* compositionIfPossible(EditCommand* command)
{
if (!command->isCompositeEditCommand())
return 0;
return toCompositeEditCommand(command)->composition();
}
void EditCommand::setStartingSelection(const VisibleSelection& selection)
{
for (EditCommand* command = this; ; command = command->m_parent) {
if (EditCommandComposition* composition = compositionIfPossible(command)) {
ASSERT(command->isTopLevelCommand());
composition->setStartingSelection(selection);
}
command->m_startingSelection = selection;
if (!command->m_parent || command->m_parent->isFirstCommand(command))
break;
}
}
void EditCommand::setStartingSelection(const VisiblePosition& position)
{
setStartingSelection(VisibleSelection(position));
}
void EditCommand::setEndingSelection(const VisibleSelection& selection)
{
for (EditCommand* command = this; command; command = command->m_parent) {
if (EditCommandComposition* composition = compositionIfPossible(command)) {
ASSERT(command->isTopLevelCommand());
composition->setEndingSelection(selection);
}
command->m_endingSelection = selection;
}
}
void EditCommand::setEndingSelection(const VisiblePosition& position)
{
setEndingSelection(VisibleSelection(position));
}
void EditCommand::setParent(CompositeEditCommand* parent)
{
ASSERT((parent && !m_parent) || (!parent && m_parent));
ASSERT(!parent || !isCompositeEditCommand() || !toCompositeEditCommand(this)->composition());
m_parent = parent;
if (parent) {
m_startingSelection = parent->m_endingSelection;
m_endingSelection = parent->m_endingSelection;
}
}
void SimpleEditCommand::doReapply()
{
doApply();
}
}