4B3043C90AE0371D00A82647 /* SoundMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B3043C80AE0371D00A82647 /* SoundMac.mm */; };
4B3043CC0AE0373B00A82647 /* Editor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B3043CA0AE0373B00A82647 /* Editor.cpp */; };
4B3043CD0AE0373B00A82647 /* Editor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3043CB0AE0373B00A82647 /* Editor.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 4BBDBF7D0ACC9290005F6E97 /* CommandByName.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BBDBF7B0ACC9290005F6E97 /* CommandByName.cpp */; };
- 4BBDBF7E0ACC9290005F6E97 /* CommandByName.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBDBF7C0ACC9290005F6E97 /* CommandByName.h */; };
4E1959210A39DABA00220FE5 /* MediaFeatureNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E19591F0A39DABA00220FE5 /* MediaFeatureNames.cpp */; };
4E1959220A39DABA00220FE5 /* MediaFeatureNames.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1959200A39DABA00220FE5 /* MediaFeatureNames.h */; };
4E1959290A39DACC00220FE5 /* MediaQuery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E1959230A39DACC00220FE5 /* MediaQuery.cpp */; };
4B3043C80AE0371D00A82647 /* SoundMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = SoundMac.mm; sourceTree = "<group>"; };
4B3043CA0AE0373B00A82647 /* Editor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Editor.cpp; sourceTree = "<group>"; };
4B3043CB0AE0373B00A82647 /* Editor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Editor.h; sourceTree = "<group>"; };
- 4BBDBF7B0ACC9290005F6E97 /* CommandByName.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CommandByName.cpp; sourceTree = "<group>"; };
- 4BBDBF7C0ACC9290005F6E97 /* CommandByName.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CommandByName.h; sourceTree = "<group>"; };
4E19591F0A39DABA00220FE5 /* MediaFeatureNames.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MediaFeatureNames.cpp; sourceTree = "<group>"; };
4E1959200A39DABA00220FE5 /* MediaFeatureNames.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MediaFeatureNames.h; sourceTree = "<group>"; };
4E1959230A39DACC00220FE5 /* MediaQuery.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MediaQuery.cpp; sourceTree = "<group>"; };
93309D86099E64910056E581 /* editing */ = {
isa = PBXGroup;
children = (
- 4BBDBF7B0ACC9290005F6E97 /* CommandByName.cpp */,
- 4BBDBF7C0ACC9290005F6E97 /* CommandByName.h */,
DB23C2C90A508D29002489EB /* IndentOutdentCommand.cpp */,
DB23C2CA0A508D29002489EB /* IndentOutdentCommand.h */,
D05CED270A40BB2C00C5AF38 /* FormatBlockCommand.cpp */,
85989DCF0ACC8BBD00A0BC51 /* DOMOverflowEventInternal.h in Headers */,
85989DD00ACC8BBD00A0BC51 /* DOMUIEventInternal.h in Headers */,
85989DD10ACC8BBD00A0BC51 /* DOMWheelEventInternal.h in Headers */,
- 4BBDBF7E0ACC9290005F6E97 /* CommandByName.h in Headers */,
85ACEF0C0ACDCCCF001214FF /* DOMSVGAnimatedPathData.h in Headers */,
85ACEF0D0ACDCCCF001214FF /* DOMSVGAnimatedPoints.h in Headers */,
85ACEF0E0ACDCCCF001214FF /* DOMSVGAnimatedPreserveAspectRatio.h in Headers */,
850FD1FA0AC9C84200123D0D /* DOMSVGAnimatedTransformList.mm in Sources */,
85D79ADB0ACA17EB00F02FC5 /* DOMSVGStringList.mm in Sources */,
859C9C400ACACCCC00791611 /* DOMSVGRectElement.mm in Sources */,
- 4BBDBF7D0ACC9290005F6E97 /* CommandByName.cpp in Sources */,
85ACEF0F0ACDCCCF001214FF /* DOMSVGAnimatedPreserveAspectRatio.mm in Sources */,
85ACEF110ACDCCCF001214FF /* DOMSVGPreserveAspectRatio.mm in Sources */,
85ACEF7D0ACDCFCE001214FF /* DOMSVGAElement.mm in Sources */,
149C284408902B11008A9EFC /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- DEBUG_INFORMATION_FORMAT = dwarf;
+ DEBUG_INFORMATION_FORMAT = stabs;
FEATURE_DEFINES = "SVG_SUPPORT XPATH_SUPPORT";
GCC_ENABLE_CPP_EXCEPTIONS = NO;
GCC_ENABLE_CPP_RTTI = NO;
isa = XCBuildConfiguration;
buildSettings = {
DEAD_CODE_STRIPPING = YES;
- DEBUG_INFORMATION_FORMAT = dwarf;
+ DEBUG_INFORMATION_FORMAT = stabs;
FEATURE_DEFINES = "SVG_SUPPORT XPATH_SUPPORT";
GCC_DEBUGGING_SYMBOLS = full;
GCC_ENABLE_CPP_EXCEPTIONS = NO;
#include "ReplaceSelectionCommand.h"
#include "SelectionController.h"
#include "Sound.h"
+#include "TypingCommand.h"
#include "htmlediting.h"
#include "markup.h"
applyParagraphStyle(style, editingAction);
}
-void Editor::toggleBold()
-{
- ExceptionCode ec;
-
- RefPtr<CSSStyleDeclaration> style = m_frame->document()->createCSSStyleDeclaration();
- style->setProperty(CSS_PROP_FONT_WEIGHT, "bold", false, ec);
- if (selectionStartHasStyle(style.get()))
- style->setProperty(CSS_PROP_FONT_WEIGHT, "normal", false, ec);
- applyStyleToSelection(style.get(), EditActionSetFont);
-}
-
-void Editor::toggleItalic()
-{
- ExceptionCode ec;
-
- RefPtr<CSSStyleDeclaration> style = m_frame->document()->createCSSStyleDeclaration();
- style->setProperty(CSS_PROP_FONT_STYLE, "italic", false, ec);
- if (selectionStartHasStyle(style.get()))
- style->setProperty(CSS_PROP_FONT_STYLE, "normal", false, ec);
- applyStyleToSelection(style.get(), EditActionSetFont);
-}
-
bool Editor::selectionStartHasStyle(CSSStyleDeclaration* style) const
{
Node* nodeToRemove;
// Execute command functions
+bool execCopy(Frame* frame)
+{
+ frame->copyToPasteboard();
+ return true;
+}
+
+bool execCut(Frame* frame)
+{
+ frame->cutToPasteboard();
+ return true;
+}
+
+static bool execDelete(Frame* frame)
+{
+ TypingCommand::deleteKeyPressed(frame->document(), frame->selectionGranularity() == WordGranularity);
+ return true;
+}
+
+static bool execForwardDelete(Frame* frame)
+{
+ TypingCommand::forwardDeleteKeyPressed(frame->document());
+ return true;
+}
+
static bool execMoveBackward(Frame* frame)
{
frame->selectionController()->modify(SelectionController::MOVE, SelectionController::BACKWARD, CharacterGranularity, true);
return true;
}
+static bool execPaste(Frame* frame)
+{
+ frame->pasteFromPasteboard();
+ return true;
+}
+
+static bool execSelectAll(Frame* frame)
+{
+ frame->selectionController()->selectAll();
+ return true;
+}
+
+static bool execToggleBold(Frame* frame)
+{
+ ExceptionCode ec;
+
+ RefPtr<CSSStyleDeclaration> style = frame->document()->createCSSStyleDeclaration();
+ style->setProperty(CSS_PROP_FONT_WEIGHT, "bold", false, ec);
+ if (frame->editor()->selectionStartHasStyle(style.get()))
+ style->setProperty(CSS_PROP_FONT_WEIGHT, "normal", false, ec);
+ frame->editor()->applyStyleToSelection(style.get(), EditActionSetFont);
+ return true;
+}
+
+static bool execToggleItalic(Frame* frame)
+{
+ ExceptionCode ec;
+
+ RefPtr<CSSStyleDeclaration> style = frame->document()->createCSSStyleDeclaration();
+ style->setProperty(CSS_PROP_FONT_STYLE, "italic", false, ec);
+ if (frame->editor()->selectionStartHasStyle(style.get()))
+ style->setProperty(CSS_PROP_FONT_STYLE, "normal", false, ec);
+ frame->editor()->applyStyleToSelection(style.get(), EditActionSetFont);
+ return true;
+}
+
// Enabled functions
-bool canAlterCurrentSelection(Frame* frame)
+static bool enabled(Frame*)
+{
+ return true;
+}
+
+static bool canPaste(Frame* frame)
+{
+ return frame->editor()->canPaste();
+}
+
+static bool hasEditableSelection(Frame* frame)
{
return frame->selectionController()->isCaretOrRange() && frame->selectionController()->isContentEditable();
}
+static bool hasEditableRangeSelection(Frame* frame)
+{
+ return frame->selectionController()->isRange() && frame->selectionController()->isContentEditable();
+}
+
+static bool hasRangeSelection(Frame* frame)
+{
+ return frame->selectionController()->isRange();
+}
+
+static bool hasRichlyEditableSelection(Frame* frame)
+{
+ return frame->selectionController()->isCaretOrRange() && frame->selectionController()->isContentRichlyEditable();
+}
+
struct Command {
bool (*enabled)(Frame* frame);
bool (*exec)(Frame* frame);
struct CommandEntry { const char* name; Command command; };
static const CommandEntry commands[] = {
- { "MoveBackward", { canAlterCurrentSelection, execMoveBackward } },
- { "MoveBackwardAndModifySelection", { canAlterCurrentSelection, execMoveBackwardAndModifySelection } },
- { "MoveDown", { canAlterCurrentSelection, execMoveDown } },
- { "MoveDownAndModifySelection", { canAlterCurrentSelection, execMoveDownAndModifySelection } },
- { "MoveForward", { canAlterCurrentSelection, execMoveForward } },
- { "MoveForwardAndModifySelection", { canAlterCurrentSelection, execMoveForwardAndModifySelection } },
- { "MoveLeft", { canAlterCurrentSelection, execMoveLeft } },
- { "MoveLeftAndModifySelection", { canAlterCurrentSelection, execMoveLeftAndModifySelection } },
- { "MoveRight", { canAlterCurrentSelection, execMoveRight } },
- { "MoveRightAndModifySelection", { canAlterCurrentSelection, execMoveRightAndModifySelection } },
- { "MoveToBeginningOfDocument", { canAlterCurrentSelection, execMoveToBeginningOfDocument } },
- { "MoveToBeginningOfDocumentAndModifySelection", { canAlterCurrentSelection, execMoveToBeginningOfDocumentAndModifySelection } },
- { "MoveToBeginningOfSentence", { canAlterCurrentSelection, execMoveToBeginningOfSentence } },
- { "MoveToBeginningOfSentenceAndModifySelection", { canAlterCurrentSelection, execMoveToBeginningOfSentenceAndModifySelection } },
- { "MoveToBeginningOfLine", { canAlterCurrentSelection, execMoveToBeginningOfLine } },
- { "MoveToBeginningOfLineAndModifySelection", { canAlterCurrentSelection, execMoveToBeginningOfLineAndModifySelection } },
- { "MoveToBeginningOfParagraph", { canAlterCurrentSelection, execMoveToBeginningOfParagraph } },
- { "MoveToBeginningOfLineAndModifySelection", { canAlterCurrentSelection, execMoveToBeginningOfParagraphAndModifySelection } },
- { "MoveToEndOfDocument", { canAlterCurrentSelection, execMoveToEndOfDocument } },
- { "MoveToEndOfDocumentAndModifySelection", { canAlterCurrentSelection, execMoveToEndOfDocumentAndModifySelection } },
- { "MoveToEndOfSentence", { canAlterCurrentSelection, execMoveToEndOfSentence } },
- { "MoveToEndOfSentenceAndModifySelection", { canAlterCurrentSelection, execMoveToEndOfSentenceAndModifySelection } },
- { "MoveToEndOfLine", { canAlterCurrentSelection, execMoveToEndOfLine } },
- { "MoveToEndOfLineAndModifySelection", { canAlterCurrentSelection, execMoveToEndOfLineAndModifySelection } },
- { "MoveToEndOfParagraph", { canAlterCurrentSelection, execMoveToEndOfParagraph } },
- { "MoveToEndOfLineAndModifySelection", { canAlterCurrentSelection, execMoveToEndOfParagraphAndModifySelection } },
- { "MoveParagraphBackwardAndModifySelection", { canAlterCurrentSelection, execMoveParagraphBackwardAndModifySelection } },
- { "MoveParagraphForwardAndModifySelection", { canAlterCurrentSelection, execMoveParagraphForwardAndModifySelection } },
- { "MoveUp", { canAlterCurrentSelection, execMoveUp } },
- { "MoveUpAndModifySelection", { canAlterCurrentSelection, execMoveUpAndModifySelection } },
- { "MoveWordBackward", { canAlterCurrentSelection, execMoveWordBackward } },
- { "MoveWordBackwardAndModifySelection", { canAlterCurrentSelection, execMoveWordBackwardAndModifySelection } },
- { "MoveWordForward", { canAlterCurrentSelection, execMoveWordForward } },
- { "MoveWordForwardAndModifySelection", { canAlterCurrentSelection, execMoveWordForwardAndModifySelection } },
- { "MoveWordLeft", { canAlterCurrentSelection, execMoveWordLeft } },
- { "MoveWordLeftAndModifySelection", { canAlterCurrentSelection, execMoveWordLeftAndModifySelection } },
- { "MoveWordRight", { canAlterCurrentSelection, execMoveWordRight } },
- { "MoveWordRightAndModifySelection", { canAlterCurrentSelection, execMoveWordRightAndModifySelection } },
+ { "Copy", { hasRangeSelection, execCopy } },
+ { "Cut", { hasEditableRangeSelection, execCut } },
+ { "Delete", { hasEditableSelection, execDelete } },
+ { "ForwardDelete", { hasEditableSelection, execForwardDelete } },
+ { "MoveBackward", { hasEditableSelection, execMoveBackward } },
+ { "MoveBackwardAndModifySelection", { hasEditableSelection, execMoveBackwardAndModifySelection } },
+ { "MoveDown", { hasEditableSelection, execMoveDown } },
+ { "MoveDownAndModifySelection", { hasEditableSelection, execMoveDownAndModifySelection } },
+ { "MoveForward", { hasEditableSelection, execMoveForward } },
+ { "MoveForwardAndModifySelection", { hasEditableSelection, execMoveForwardAndModifySelection } },
+ { "MoveLeft", { hasEditableSelection, execMoveLeft } },
+ { "MoveLeftAndModifySelection", { hasEditableSelection, execMoveLeftAndModifySelection } },
+ { "MoveRight", { hasEditableSelection, execMoveRight } },
+ { "MoveRightAndModifySelection", { hasEditableSelection, execMoveRightAndModifySelection } },
+ { "MoveToBeginningOfDocument", { hasEditableSelection, execMoveToBeginningOfDocument } },
+ { "MoveToBeginningOfDocumentAndModifySelection", { hasEditableSelection, execMoveToBeginningOfDocumentAndModifySelection } },
+ { "MoveToBeginningOfSentence", { hasEditableSelection, execMoveToBeginningOfSentence } },
+ { "MoveToBeginningOfSentenceAndModifySelection", { hasEditableSelection, execMoveToBeginningOfSentenceAndModifySelection } },
+ { "MoveToBeginningOfLine", { hasEditableSelection, execMoveToBeginningOfLine } },
+ { "MoveToBeginningOfLineAndModifySelection", { hasEditableSelection, execMoveToBeginningOfLineAndModifySelection } },
+ { "MoveToBeginningOfParagraph", { hasEditableSelection, execMoveToBeginningOfParagraph } },
+ { "MoveToBeginningOfLineAndModifySelection", { hasEditableSelection, execMoveToBeginningOfParagraphAndModifySelection } },
+ { "MoveToEndOfDocument", { hasEditableSelection, execMoveToEndOfDocument } },
+ { "MoveToEndOfDocumentAndModifySelection", { hasEditableSelection, execMoveToEndOfDocumentAndModifySelection } },
+ { "MoveToEndOfSentence", { hasEditableSelection, execMoveToEndOfSentence } },
+ { "MoveToEndOfSentenceAndModifySelection", { hasEditableSelection, execMoveToEndOfSentenceAndModifySelection } },
+ { "MoveToEndOfLine", { hasEditableSelection, execMoveToEndOfLine } },
+ { "MoveToEndOfLineAndModifySelection", { hasEditableSelection, execMoveToEndOfLineAndModifySelection } },
+ { "MoveToEndOfParagraph", { hasEditableSelection, execMoveToEndOfParagraph } },
+ { "MoveToEndOfLineAndModifySelection", { hasEditableSelection, execMoveToEndOfParagraphAndModifySelection } },
+ { "MoveParagraphBackwardAndModifySelection", { hasEditableSelection, execMoveParagraphBackwardAndModifySelection } },
+ { "MoveParagraphForwardAndModifySelection", { hasEditableSelection, execMoveParagraphForwardAndModifySelection } },
+ { "MoveUp", { hasEditableSelection, execMoveUp } },
+ { "MoveUpAndModifySelection", { hasEditableSelection, execMoveUpAndModifySelection } },
+ { "MoveWordBackward", { hasEditableSelection, execMoveWordBackward } },
+ { "MoveWordBackwardAndModifySelection", { hasEditableSelection, execMoveWordBackwardAndModifySelection } },
+ { "MoveWordForward", { hasEditableSelection, execMoveWordForward } },
+ { "MoveWordForwardAndModifySelection", { hasEditableSelection, execMoveWordForwardAndModifySelection } },
+ { "MoveWordLeft", { hasEditableSelection, execMoveWordLeft } },
+ { "MoveWordLeftAndModifySelection", { hasEditableSelection, execMoveWordLeftAndModifySelection } },
+ { "MoveWordRight", { hasEditableSelection, execMoveWordRight } },
+ { "MoveWordRightAndModifySelection", { hasEditableSelection, execMoveWordRightAndModifySelection } },
+ { "Paste", { canPaste, execPaste } },
+ { "SelectAll", { enabled, execSelectAll } },
+ { "ToggleBold", { hasRichlyEditableSelection, execToggleBold } },
+ { "ToggleItalic", { hasRichlyEditableSelection, execToggleItalic } }
};
CommandMap* commandMap = new CommandMap;