| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2011 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 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 #include "core/editing/SpellCheckRequester.h" | 52 #include "core/editing/SpellCheckRequester.h" |
| 53 #include "core/editing/TextCheckingHelper.h" | 53 #include "core/editing/TextCheckingHelper.h" |
| 54 #include "core/editing/TextIterator.h" | 54 #include "core/editing/TextIterator.h" |
| 55 #include "core/editing/TypingCommand.h" | 55 #include "core/editing/TypingCommand.h" |
| 56 #include "core/editing/VisibleUnits.h" | 56 #include "core/editing/VisibleUnits.h" |
| 57 #include "core/editing/htmlediting.h" | 57 #include "core/editing/htmlediting.h" |
| 58 #include "core/editing/markup.h" | 58 #include "core/editing/markup.h" |
| 59 #include "core/events/ClipboardEvent.h" | 59 #include "core/events/ClipboardEvent.h" |
| 60 #include "core/events/EventNames.h" | 60 #include "core/events/EventNames.h" |
| 61 #include "core/events/KeyboardEvent.h" | 61 #include "core/events/KeyboardEvent.h" |
| 62 #include "core/events/ScopedEventQueue.h" |
| 62 #include "core/events/TextEvent.h" | 63 #include "core/events/TextEvent.h" |
| 63 #include "core/fetch/ResourceFetcher.h" | 64 #include "core/fetch/ResourceFetcher.h" |
| 64 #include "core/html/HTMLImageElement.h" | 65 #include "core/html/HTMLImageElement.h" |
| 65 #include "core/html/HTMLInputElement.h" | 66 #include "core/html/HTMLInputElement.h" |
| 66 #include "core/html/HTMLTextAreaElement.h" | 67 #include "core/html/HTMLTextAreaElement.h" |
| 67 #include "core/loader/EmptyClients.h" | 68 #include "core/loader/EmptyClients.h" |
| 68 #include "core/page/EditorClient.h" | 69 #include "core/page/EditorClient.h" |
| 69 #include "core/page/EventHandler.h" | 70 #include "core/page/EventHandler.h" |
| 70 #include "core/page/FocusController.h" | 71 #include "core/page/FocusController.h" |
| 71 #include "core/page/Frame.h" | 72 #include "core/page/Frame.h" |
| (...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 751 static void dispatchEditableContentChangedEvents(PassRefPtr<Element> startRoot,
PassRefPtr<Element> endRoot) | 752 static void dispatchEditableContentChangedEvents(PassRefPtr<Element> startRoot,
PassRefPtr<Element> endRoot) |
| 752 { | 753 { |
| 753 if (startRoot) | 754 if (startRoot) |
| 754 startRoot->dispatchEvent(Event::create(eventNames().webkitEditableConten
tChangedEvent), IGNORE_EXCEPTION); | 755 startRoot->dispatchEvent(Event::create(eventNames().webkitEditableConten
tChangedEvent), IGNORE_EXCEPTION); |
| 755 if (endRoot && endRoot != startRoot) | 756 if (endRoot && endRoot != startRoot) |
| 756 endRoot->dispatchEvent(Event::create(eventNames().webkitEditableContentC
hangedEvent), IGNORE_EXCEPTION); | 757 endRoot->dispatchEvent(Event::create(eventNames().webkitEditableContentC
hangedEvent), IGNORE_EXCEPTION); |
| 757 } | 758 } |
| 758 | 759 |
| 759 void Editor::appliedEditing(PassRefPtr<CompositeEditCommand> cmd) | 760 void Editor::appliedEditing(PassRefPtr<CompositeEditCommand> cmd) |
| 760 { | 761 { |
| 762 EventQueueScope scope; |
| 761 m_frame->document()->updateLayout(); | 763 m_frame->document()->updateLayout(); |
| 762 | 764 |
| 763 EditCommandComposition* composition = cmd->composition(); | 765 EditCommandComposition* composition = cmd->composition(); |
| 764 ASSERT(composition); | 766 ASSERT(composition); |
| 767 dispatchEditableContentChangedEvents(composition->startingRootEditableElemen
t(), composition->endingRootEditableElement()); |
| 765 VisibleSelection newSelection(cmd->endingSelection()); | 768 VisibleSelection newSelection(cmd->endingSelection()); |
| 766 | 769 |
| 767 // Don't clear the typing style with this selection change. We do those thi
ngs elsewhere if necessary. | 770 // Don't clear the typing style with this selection change. We do those thi
ngs elsewhere if necessary. |
| 768 changeSelectionAfterCommand(newSelection, 0); | 771 changeSelectionAfterCommand(newSelection, 0); |
| 769 dispatchEditableContentChangedEvents(composition->startingRootEditableElemen
t(), composition->endingRootEditableElement()); | |
| 770 | 772 |
| 771 if (!cmd->preservesTypingStyle()) | 773 if (!cmd->preservesTypingStyle()) |
| 772 m_frame->selection().clearTypingStyle(); | 774 m_frame->selection().clearTypingStyle(); |
| 773 | 775 |
| 774 // Command will be equal to last edit command only in the case of typing | 776 // Command will be equal to last edit command only in the case of typing |
| 775 if (m_lastEditCommand.get() == cmd) | 777 if (m_lastEditCommand.get() == cmd) |
| 776 ASSERT(cmd->isTypingCommand()); | 778 ASSERT(cmd->isTypingCommand()); |
| 777 else { | 779 else { |
| 778 // Only register a new undo command if the command passed in is | 780 // Only register a new undo command if the command passed in is |
| 779 // different from the last command | 781 // different from the last command |
| 780 m_lastEditCommand = cmd; | 782 m_lastEditCommand = cmd; |
| 781 client().registerUndoStep(m_lastEditCommand->ensureComposition()); | 783 client().registerUndoStep(m_lastEditCommand->ensureComposition()); |
| 782 } | 784 } |
| 783 | 785 |
| 784 respondToChangedContents(newSelection); | 786 respondToChangedContents(newSelection); |
| 785 } | 787 } |
| 786 | 788 |
| 787 void Editor::unappliedEditing(PassRefPtr<EditCommandComposition> cmd) | 789 void Editor::unappliedEditing(PassRefPtr<EditCommandComposition> cmd) |
| 788 { | 790 { |
| 791 EventQueueScope scope; |
| 789 m_frame->document()->updateLayout(); | 792 m_frame->document()->updateLayout(); |
| 790 | 793 |
| 794 dispatchEditableContentChangedEvents(cmd->startingRootEditableElement(), cmd
->endingRootEditableElement()); |
| 795 |
| 791 VisibleSelection newSelection(cmd->startingSelection()); | 796 VisibleSelection newSelection(cmd->startingSelection()); |
| 792 changeSelectionAfterCommand(newSelection, FrameSelection::CloseTyping | Fram
eSelection::ClearTypingStyle); | 797 changeSelectionAfterCommand(newSelection, FrameSelection::CloseTyping | Fram
eSelection::ClearTypingStyle); |
| 793 dispatchEditableContentChangedEvents(cmd->startingRootEditableElement(), cmd
->endingRootEditableElement()); | |
| 794 | 798 |
| 795 m_lastEditCommand = 0; | 799 m_lastEditCommand = 0; |
| 796 client().registerRedoStep(cmd); | 800 client().registerRedoStep(cmd); |
| 797 respondToChangedContents(newSelection); | 801 respondToChangedContents(newSelection); |
| 798 } | 802 } |
| 799 | 803 |
| 800 void Editor::reappliedEditing(PassRefPtr<EditCommandComposition> cmd) | 804 void Editor::reappliedEditing(PassRefPtr<EditCommandComposition> cmd) |
| 801 { | 805 { |
| 806 EventQueueScope scope; |
| 802 m_frame->document()->updateLayout(); | 807 m_frame->document()->updateLayout(); |
| 803 | 808 |
| 809 dispatchEditableContentChangedEvents(cmd->startingRootEditableElement(), cmd
->endingRootEditableElement()); |
| 810 |
| 804 VisibleSelection newSelection(cmd->endingSelection()); | 811 VisibleSelection newSelection(cmd->endingSelection()); |
| 805 changeSelectionAfterCommand(newSelection, FrameSelection::CloseTyping | Fram
eSelection::ClearTypingStyle); | 812 changeSelectionAfterCommand(newSelection, FrameSelection::CloseTyping | Fram
eSelection::ClearTypingStyle); |
| 806 dispatchEditableContentChangedEvents(cmd->startingRootEditableElement(), cmd
->endingRootEditableElement()); | |
| 807 | 813 |
| 808 m_lastEditCommand = 0; | 814 m_lastEditCommand = 0; |
| 809 client().registerUndoStep(cmd); | 815 client().registerUndoStep(cmd); |
| 810 respondToChangedContents(newSelection); | 816 respondToChangedContents(newSelection); |
| 811 } | 817 } |
| 812 | 818 |
| 813 Editor::Editor(Frame& frame) | 819 Editor::Editor(Frame& frame) |
| 814 : FrameDestructionObserver(&frame) | 820 : FrameDestructionObserver(&frame) |
| 815 , m_preventRevealSelection(0) | 821 , m_preventRevealSelection(0) |
| 816 , m_shouldStartNewKillRingSequence(false) | 822 , m_shouldStartNewKillRingSequence(false) |
| (...skipping 1384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2201 return WebCore::unifiedTextCheckerEnabled(m_frame); | 2207 return WebCore::unifiedTextCheckerEnabled(m_frame); |
| 2202 } | 2208 } |
| 2203 | 2209 |
| 2204 void Editor::toggleOverwriteModeEnabled() | 2210 void Editor::toggleOverwriteModeEnabled() |
| 2205 { | 2211 { |
| 2206 m_overwriteModeEnabled = !m_overwriteModeEnabled; | 2212 m_overwriteModeEnabled = !m_overwriteModeEnabled; |
| 2207 frame().selection().setShouldShowBlockCursor(m_overwriteModeEnabled); | 2213 frame().selection().setShouldShowBlockCursor(m_overwriteModeEnabled); |
| 2208 }; | 2214 }; |
| 2209 | 2215 |
| 2210 } // namespace WebCore | 2216 } // namespace WebCore |
| OLD | NEW |