| 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 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 return false; | 193 return false; |
| 194 } | 194 } |
| 195 | 195 |
| 196 static bool executeInsertFragment(LocalFrame& frame, PassRefPtrWillBeRawPtr<Docu
mentFragment> fragment) | 196 static bool executeInsertFragment(LocalFrame& frame, PassRefPtrWillBeRawPtr<Docu
mentFragment> fragment) |
| 197 { | 197 { |
| 198 ASSERT(frame.document()); | 198 ASSERT(frame.document()); |
| 199 ReplaceSelectionCommand::create(*frame.document(), fragment, ReplaceSelectio
nCommand::PreventNesting, EditActionUnspecified)->apply(); | 199 ReplaceSelectionCommand::create(*frame.document(), fragment, ReplaceSelectio
nCommand::PreventNesting, EditActionUnspecified)->apply(); |
| 200 return true; | 200 return true; |
| 201 } | 201 } |
| 202 | 202 |
| 203 static bool executeInsertNode(LocalFrame& frame, PassRefPtrWillBeRawPtr<Node> co
ntent) | 203 static bool executeInsertElement(LocalFrame& frame, PassRefPtrWillBeRawPtr<HTMLE
lement> content) |
| 204 { | 204 { |
| 205 ASSERT(frame.document()); | 205 ASSERT(frame.document()); |
| 206 RefPtrWillBeRawPtr<DocumentFragment> fragment = DocumentFragment::create(*fr
ame.document()); | 206 RefPtrWillBeRawPtr<DocumentFragment> fragment = DocumentFragment::create(*fr
ame.document()); |
| 207 TrackExceptionState exceptionState; | 207 TrackExceptionState exceptionState; |
| 208 fragment->appendChild(content, exceptionState); | 208 fragment->appendChild(content, exceptionState); |
| 209 if (exceptionState.hadException()) | 209 if (exceptionState.hadException()) |
| 210 return false; | 210 return false; |
| 211 return executeInsertFragment(frame, fragment.release()); | 211 return executeInsertFragment(frame, fragment.release()); |
| 212 } | 212 } |
| 213 | 213 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 264 } | 264 } |
| 265 | 265 |
| 266 static unsigned verticalScrollDistance(LocalFrame& frame) | 266 static unsigned verticalScrollDistance(LocalFrame& frame) |
| 267 { | 267 { |
| 268 Element* focusedElement = frame.document()->focusedElement(); | 268 Element* focusedElement = frame.document()->focusedElement(); |
| 269 if (!focusedElement) | 269 if (!focusedElement) |
| 270 return 0; | 270 return 0; |
| 271 RenderObject* renderer = focusedElement->renderer(); | 271 RenderObject* renderer = focusedElement->renderer(); |
| 272 if (!renderer || !renderer->isBox()) | 272 if (!renderer || !renderer->isBox()) |
| 273 return 0; | 273 return 0; |
| 274 RenderStyle* style = renderer->style(); | 274 RenderBox& renderBox = toRenderBox(*renderer); |
| 275 RenderStyle* style = renderBox.style(); |
| 275 if (!style) | 276 if (!style) |
| 276 return 0; | 277 return 0; |
| 277 if (!(style->overflowY() == OSCROLL || style->overflowY() == OAUTO || focuse
dElement->hasEditableStyle())) | 278 if (!(style->overflowY() == OSCROLL || style->overflowY() == OAUTO || focuse
dElement->hasEditableStyle())) |
| 278 return 0; | 279 return 0; |
| 279 int height = std::min<int>(toRenderBox(renderer)->clientHeight(), frame.view
()->visibleHeight()); | 280 int height = std::min<int>(renderBox.clientHeight(), frame.view()->visibleHe
ight()); |
| 280 return static_cast<unsigned>(max(max<int>(height * ScrollableArea::minFracti
onToStepWhenPaging(), height - ScrollableArea::maxOverlapBetweenPages()), 1)); | 281 return static_cast<unsigned>(max(max<int>(height * ScrollableArea::minFracti
onToStepWhenPaging(), height - ScrollableArea::maxOverlapBetweenPages()), 1)); |
| 281 } | 282 } |
| 282 | 283 |
| 283 static PassRefPtrWillBeRawPtr<Range> unionDOMRanges(Range* a, Range* b) | 284 static PassRefPtrWillBeRawPtr<Range> unionDOMRanges(Range* a, Range* b) |
| 284 { | 285 { |
| 285 Range* start = a->compareBoundaryPoints(Range::START_TO_START, b, ASSERT_NO_
EXCEPTION) <= 0 ? a : b; | 286 Range* start = a->compareBoundaryPoints(Range::START_TO_START, b, ASSERT_NO_
EXCEPTION) <= 0 ? a : b; |
| 286 Range* end = a->compareBoundaryPoints(Range::END_TO_END, b, ASSERT_NO_EXCEPT
ION) <= 0 ? b : a; | 287 Range* end = a->compareBoundaryPoints(Range::END_TO_END, b, ASSERT_NO_EXCEPT
ION) <= 0 ? b : a; |
| 287 | 288 |
| 288 return Range::create(a->ownerDocument(), start->startContainer(), start->sta
rtOffset(), end->endContainer(), end->endOffset()); | 289 return Range::create(a->ownerDocument(), start->startContainer(), start->sta
rtOffset(), end->endContainer(), end->endOffset()); |
| 289 } | 290 } |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 { | 502 { |
| 502 return targetFrame(frame, event)->eventHandler().handleTextInputEvent("\t",
event, TextEventInputBackTab); | 503 return targetFrame(frame, event)->eventHandler().handleTextInputEvent("\t",
event, TextEventInputBackTab); |
| 503 } | 504 } |
| 504 | 505 |
| 505 static bool executeInsertHorizontalRule(LocalFrame& frame, Event*, EditorCommand
Source, const String& value) | 506 static bool executeInsertHorizontalRule(LocalFrame& frame, Event*, EditorCommand
Source, const String& value) |
| 506 { | 507 { |
| 507 ASSERT(frame.document()); | 508 ASSERT(frame.document()); |
| 508 RefPtrWillBeRawPtr<HTMLHRElement> rule = HTMLHRElement::create(*frame.docume
nt()); | 509 RefPtrWillBeRawPtr<HTMLHRElement> rule = HTMLHRElement::create(*frame.docume
nt()); |
| 509 if (!value.isEmpty()) | 510 if (!value.isEmpty()) |
| 510 rule->setIdAttribute(AtomicString(value)); | 511 rule->setIdAttribute(AtomicString(value)); |
| 511 return executeInsertNode(frame, rule.release()); | 512 return executeInsertElement(frame, rule.release()); |
| 512 } | 513 } |
| 513 | 514 |
| 514 static bool executeInsertHTML(LocalFrame& frame, Event*, EditorCommandSource, co
nst String& value) | 515 static bool executeInsertHTML(LocalFrame& frame, Event*, EditorCommandSource, co
nst String& value) |
| 515 { | 516 { |
| 516 ASSERT(frame.document()); | 517 ASSERT(frame.document()); |
| 517 return executeInsertFragment(frame, createFragmentFromMarkup(*frame.document
(), value, "")); | 518 return executeInsertFragment(frame, createFragmentFromMarkup(*frame.document
(), value, "")); |
| 518 } | 519 } |
| 519 | 520 |
| 520 static bool executeInsertImage(LocalFrame& frame, Event*, EditorCommandSource, c
onst String& value) | 521 static bool executeInsertImage(LocalFrame& frame, Event*, EditorCommandSource, c
onst String& value) |
| 521 { | 522 { |
| 522 // FIXME: If userInterface is true, we should display a dialog box and let t
he user choose a local image. | 523 // FIXME: If userInterface is true, we should display a dialog box and let t
he user choose a local image. |
| 523 ASSERT(frame.document()); | 524 ASSERT(frame.document()); |
| 524 RefPtrWillBeRawPtr<HTMLImageElement> image = HTMLImageElement::create(*frame
.document()); | 525 RefPtrWillBeRawPtr<HTMLImageElement> image = HTMLImageElement::create(*frame
.document()); |
| 525 image->setSrc(value); | 526 image->setSrc(value); |
| 526 return executeInsertNode(frame, image.release()); | 527 return executeInsertElement(frame, image.release()); |
| 527 } | 528 } |
| 528 | 529 |
| 529 static bool executeInsertLineBreak(LocalFrame& frame, Event* event, EditorComman
dSource source, const String&) | 530 static bool executeInsertLineBreak(LocalFrame& frame, Event* event, EditorComman
dSource source, const String&) |
| 530 { | 531 { |
| 531 switch (source) { | 532 switch (source) { |
| 532 case CommandFromMenuOrKeyBinding: | 533 case CommandFromMenuOrKeyBinding: |
| 533 return targetFrame(frame, event)->eventHandler().handleTextInputEvent("\
n", event, TextEventInputLineBreak); | 534 return targetFrame(frame, event)->eventHandler().handleTextInputEvent("\
n", event, TextEventInputLineBreak); |
| 534 case CommandFromDOM: | 535 case CommandFromDOM: |
| 535 case CommandFromDOMWithUserInterface: | 536 case CommandFromDOMWithUserInterface: |
| 536 // Doesn't scroll to make the selection visible, or modify the kill ring
. | 537 // Doesn't scroll to make the selection visible, or modify the kill ring
. |
| (...skipping 1256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1793 { | 1794 { |
| 1794 return m_command && m_command->isTextInsertion; | 1795 return m_command && m_command->isTextInsertion; |
| 1795 } | 1796 } |
| 1796 | 1797 |
| 1797 int Editor::Command::idForHistogram() const | 1798 int Editor::Command::idForHistogram() const |
| 1798 { | 1799 { |
| 1799 return isSupported() ? m_command->idForUserMetrics : 0; | 1800 return isSupported() ? m_command->idForUserMetrics : 0; |
| 1800 } | 1801 } |
| 1801 | 1802 |
| 1802 } // namespace blink | 1803 } // namespace blink |
| OLD | NEW |