| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| 4 * Copyright (C) 2009 Igalia S.L. | 4 * Copyright (C) 2009 Igalia S.L. |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 RefPtrWillBeRawPtr<MutableStylePropertySet> style = MutableStylePropertySet:
:create(); | 128 RefPtrWillBeRawPtr<MutableStylePropertySet> style = MutableStylePropertySet:
:create(); |
| 129 style->setProperty(propertyID, propertyValue); | 129 style->setProperty(propertyID, propertyValue); |
| 130 return applyCommandToFrame(frame, source, action, style.get()); | 130 return applyCommandToFrame(frame, source, action, style.get()); |
| 131 } | 131 } |
| 132 | 132 |
| 133 // FIXME: executeToggleStyleInList does not handle complicated cases such as <b>
<u>hello</u>world</b> properly. | 133 // FIXME: executeToggleStyleInList does not handle complicated cases such as <b>
<u>hello</u>world</b> properly. |
| 134 // This function must use Editor::selectionHasStyle to determine the curr
ent style but we cannot fix this | 134 // This function must use Editor::selectionHasStyle to determine the curr
ent style but we cannot fix this |
| 135 // until https://bugs.webkit.org/show_bug.cgi?id=27818 is resolved. | 135 // until https://bugs.webkit.org/show_bug.cgi?id=27818 is resolved. |
| 136 static bool executeToggleStyleInList(LocalFrame& frame, EditorCommandSource sour
ce, EditAction action, CSSPropertyID propertyID, CSSValue* value) | 136 static bool executeToggleStyleInList(LocalFrame& frame, EditorCommandSource sour
ce, EditAction action, CSSPropertyID propertyID, CSSValue* value) |
| 137 { | 137 { |
| 138 RefPtr<EditingStyle> selectionStyle = EditingStyle::styleAtSelectionStart(fr
ame.selection().selection()); | 138 RefPtrWillBeRawPtr<EditingStyle> selectionStyle = EditingStyle::styleAtSelec
tionStart(frame.selection().selection()); |
| 139 if (!selectionStyle || !selectionStyle->style()) | 139 if (!selectionStyle || !selectionStyle->style()) |
| 140 return false; | 140 return false; |
| 141 | 141 |
| 142 RefPtrWillBeRawPtr<CSSValue> selectedCSSValue = selectionStyle->style()->get
PropertyCSSValue(propertyID); | 142 RefPtrWillBeRawPtr<CSSValue> selectedCSSValue = selectionStyle->style()->get
PropertyCSSValue(propertyID); |
| 143 String newStyle("none"); | 143 String newStyle("none"); |
| 144 if (selectedCSSValue->isValueList()) { | 144 if (selectedCSSValue->isValueList()) { |
| 145 RefPtrWillBeRawPtr<CSSValueList> selectedCSSValueList = toCSSValueList(s
electedCSSValue.get()); | 145 RefPtrWillBeRawPtr<CSSValueList> selectedCSSValueList = toCSSValueList(s
electedCSSValue.get()); |
| 146 if (!selectedCSSValueList->removeAll(value)) | 146 if (!selectedCSSValueList->removeAll(value)) |
| 147 selectedCSSValueList->append(value); | 147 selectedCSSValueList->append(value); |
| 148 if (selectedCSSValueList->length()) | 148 if (selectedCSSValueList->length()) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 162 // Style is considered present when | 162 // Style is considered present when |
| 163 // Mac: present at the beginning of selection | 163 // Mac: present at the beginning of selection |
| 164 // other: present throughout the selection | 164 // other: present throughout the selection |
| 165 | 165 |
| 166 bool styleIsPresent; | 166 bool styleIsPresent; |
| 167 if (frame.editor().behavior().shouldToggleStyleBasedOnStartOfSelection()) | 167 if (frame.editor().behavior().shouldToggleStyleBasedOnStartOfSelection()) |
| 168 styleIsPresent = frame.editor().selectionStartHasStyle(propertyID, onVal
ue); | 168 styleIsPresent = frame.editor().selectionStartHasStyle(propertyID, onVal
ue); |
| 169 else | 169 else |
| 170 styleIsPresent = frame.editor().selectionHasStyle(propertyID, onValue) =
= TrueTriState; | 170 styleIsPresent = frame.editor().selectionHasStyle(propertyID, onValue) =
= TrueTriState; |
| 171 | 171 |
| 172 RefPtr<EditingStyle> style = EditingStyle::create(propertyID, styleIsPresent
? offValue : onValue); | 172 RefPtrWillBeRawPtr<EditingStyle> style = EditingStyle::create(propertyID, st
yleIsPresent ? offValue : onValue); |
| 173 return applyCommandToFrame(frame, source, action, style->style()); | 173 return applyCommandToFrame(frame, source, action, style->style()); |
| 174 } | 174 } |
| 175 | 175 |
| 176 static bool executeApplyParagraphStyle(LocalFrame& frame, EditorCommandSource so
urce, EditAction action, CSSPropertyID propertyID, const String& propertyValue) | 176 static bool executeApplyParagraphStyle(LocalFrame& frame, EditorCommandSource so
urce, EditAction action, CSSPropertyID propertyID, const String& propertyValue) |
| 177 { | 177 { |
| 178 RefPtrWillBeRawPtr<MutableStylePropertySet> style = MutableStylePropertySet:
:create(); | 178 RefPtrWillBeRawPtr<MutableStylePropertySet> style = MutableStylePropertySet:
:create(); |
| 179 style->setProperty(propertyID, propertyValue); | 179 style->setProperty(propertyID, propertyValue); |
| 180 // FIXME: We don't call shouldApplyStyle when the source is DOM; is there a
good reason for that? | 180 // FIXME: We don't call shouldApplyStyle when the source is DOM; is there a
good reason for that? |
| 181 switch (source) { | 181 switch (source) { |
| 182 case CommandFromMenuOrKeyBinding: | 182 case CommandFromMenuOrKeyBinding: |
| 183 frame.editor().applyParagraphStyleToSelection(style.get(), action); | 183 frame.editor().applyParagraphStyleToSelection(style.get(), action); |
| 184 return true; | 184 return true; |
| 185 case CommandFromDOM: | 185 case CommandFromDOM: |
| 186 case CommandFromDOMWithUserInterface: | 186 case CommandFromDOMWithUserInterface: |
| 187 frame.editor().applyParagraphStyle(style.get()); | 187 frame.editor().applyParagraphStyle(style.get()); |
| 188 return true; | 188 return true; |
| 189 } | 189 } |
| 190 ASSERT_NOT_REACHED(); | 190 ASSERT_NOT_REACHED(); |
| 191 return false; | 191 return false; |
| 192 } | 192 } |
| 193 | 193 |
| 194 static bool executeInsertFragment(LocalFrame& frame, PassRefPtrWillBeRawPtr<Docu
mentFragment> fragment) | 194 static bool executeInsertFragment(LocalFrame& frame, PassRefPtrWillBeRawPtr<Docu
mentFragment> fragment) |
| 195 { | 195 { |
| 196 ASSERT(frame.document()); | 196 ASSERT(frame.document()); |
| 197 ReplaceSelectionCommand::create(*frame.document(), fragment, ReplaceSelectio
nCommand::PreventNesting, EditActionUnspecified)->apply(); | 197 ReplaceSelectionCommand::create(*frame.document(), fragment, ReplaceSelectio
nCommand::PreventNesting, EditActionUnspecified)->apply(); |
| 198 return true; | 198 return true; |
| 199 } | 199 } |
| 200 | 200 |
| 201 static bool executeInsertNode(LocalFrame& frame, PassRefPtr<Node> content) | 201 static bool executeInsertNode(LocalFrame& frame, PassRefPtrWillBeRawPtr<Node> co
ntent) |
| 202 { | 202 { |
| 203 ASSERT(frame.document()); | 203 ASSERT(frame.document()); |
| 204 RefPtrWillBeRawPtr<DocumentFragment> fragment = DocumentFragment::create(*fr
ame.document()); | 204 RefPtrWillBeRawPtr<DocumentFragment> fragment = DocumentFragment::create(*fr
ame.document()); |
| 205 TrackExceptionState exceptionState; | 205 TrackExceptionState exceptionState; |
| 206 fragment->appendChild(content, exceptionState); | 206 fragment->appendChild(content, exceptionState); |
| 207 if (exceptionState.hadException()) | 207 if (exceptionState.hadException()) |
| 208 return false; | 208 return false; |
| 209 return executeInsertFragment(frame, fragment.release()); | 209 return executeInsertFragment(frame, fragment.release()); |
| 210 } | 210 } |
| 211 | 211 |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 String tagName = value.lower(); | 436 String tagName = value.lower(); |
| 437 if (tagName[0] == '<' && tagName[tagName.length() - 1] == '>') | 437 if (tagName[0] == '<' && tagName[tagName.length() - 1] == '>') |
| 438 tagName = tagName.substring(1, tagName.length() - 2); | 438 tagName = tagName.substring(1, tagName.length() - 2); |
| 439 | 439 |
| 440 AtomicString localName, prefix; | 440 AtomicString localName, prefix; |
| 441 if (!Document::parseQualifiedName(AtomicString(tagName), prefix, localName,
IGNORE_EXCEPTION)) | 441 if (!Document::parseQualifiedName(AtomicString(tagName), prefix, localName,
IGNORE_EXCEPTION)) |
| 442 return false; | 442 return false; |
| 443 QualifiedName qualifiedTagName(prefix, localName, xhtmlNamespaceURI); | 443 QualifiedName qualifiedTagName(prefix, localName, xhtmlNamespaceURI); |
| 444 | 444 |
| 445 ASSERT(frame.document()); | 445 ASSERT(frame.document()); |
| 446 RefPtr<FormatBlockCommand> command = FormatBlockCommand::create(*frame.docum
ent(), qualifiedTagName); | 446 RefPtrWillBeRawPtr<FormatBlockCommand> command = FormatBlockCommand::create(
*frame.document(), qualifiedTagName); |
| 447 command->apply(); | 447 command->apply(); |
| 448 return command->didApply(); | 448 return command->didApply(); |
| 449 } | 449 } |
| 450 | 450 |
| 451 static bool executeForwardDelete(LocalFrame& frame, Event*, EditorCommandSource
source, const String&) | 451 static bool executeForwardDelete(LocalFrame& frame, Event*, EditorCommandSource
source, const String&) |
| 452 { | 452 { |
| 453 switch (source) { | 453 switch (source) { |
| 454 case CommandFromMenuOrKeyBinding: | 454 case CommandFromMenuOrKeyBinding: |
| 455 frame.editor().deleteWithDirection(DirectionForward, CharacterGranularit
y, false, true); | 455 frame.editor().deleteWithDirection(DirectionForward, CharacterGranularit
y, false, true); |
| 456 return true; | 456 return true; |
| (...skipping 1277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1734 { | 1734 { |
| 1735 return m_command && m_command->isTextInsertion; | 1735 return m_command && m_command->isTextInsertion; |
| 1736 } | 1736 } |
| 1737 | 1737 |
| 1738 int Editor::Command::idForHistogram() const | 1738 int Editor::Command::idForHistogram() const |
| 1739 { | 1739 { |
| 1740 return isSupported() ? m_command->idForUserMetrics : 0; | 1740 return isSupported() ? m_command->idForUserMetrics : 0; |
| 1741 } | 1741 } |
| 1742 | 1742 |
| 1743 } // namespace WebCore | 1743 } // namespace WebCore |
| OLD | NEW |