Title: [90808] trunk/Source/WebKit/efl
Revision
90808
Author
commit-qu...@webkit.org
Date
2011-07-11 22:58:21 -0700 (Mon, 11 Jul 2011)

Log Message

Patch by Jaehun Lim <ljaehun....@samsung.com> on 2011-07-11
Reviewed by Ryosuke Niwa.

[EFL] Supports to execute "redo" command.
https://bugs.webkit.org/show_bug.cgi?id=62536

Implements basic functions for "redo" command.

* WebCoreSupport/EditorClientEfl.cpp:
(WebCore::EditorClientEfl::registerCommandForUndo):
(WebCore::EditorClientEfl::registerCommandForRedo):
(WebCore::EditorClientEfl::clearUndoRedoOperations):
(WebCore::EditorClientEfl::canRedo):
(WebCore::EditorClientEfl::undo):
(WebCore::EditorClientEfl::redo):
(WebCore::EditorClientEfl::EditorClientEfl):
* WebCoreSupport/EditorClientEfl.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/efl/ChangeLog (90807 => 90808)


--- trunk/Source/WebKit/efl/ChangeLog	2011-07-12 04:54:54 UTC (rev 90807)
+++ trunk/Source/WebKit/efl/ChangeLog	2011-07-12 05:58:21 UTC (rev 90808)
@@ -1,3 +1,22 @@
+2011-07-11  Jaehun Lim  <ljaehun....@samsung.com>
+
+        Reviewed by Ryosuke Niwa.
+
+        [EFL] Supports to execute "redo" command.
+        https://bugs.webkit.org/show_bug.cgi?id=62536
+
+        Implements basic functions for "redo" command.
+
+        * WebCoreSupport/EditorClientEfl.cpp:
+        (WebCore::EditorClientEfl::registerCommandForUndo):
+        (WebCore::EditorClientEfl::registerCommandForRedo):
+        (WebCore::EditorClientEfl::clearUndoRedoOperations):
+        (WebCore::EditorClientEfl::canRedo):
+        (WebCore::EditorClientEfl::undo):
+        (WebCore::EditorClientEfl::redo):
+        (WebCore::EditorClientEfl::EditorClientEfl):
+        * WebCoreSupport/EditorClientEfl.h:
+
 2011-06-29  Kangil Han  <kangil....@samsung.com>
 
         Reviewed by Kenneth Rohde Christiansen.

Modified: trunk/Source/WebKit/efl/WebCoreSupport/EditorClientEfl.cpp (90807 => 90808)


--- trunk/Source/WebKit/efl/WebCoreSupport/EditorClientEfl.cpp	2011-07-12 04:54:54 UTC (rev 90807)
+++ trunk/Source/WebKit/efl/WebCoreSupport/EditorClientEfl.cpp	2011-07-12 05:58:21 UTC (rev 90808)
@@ -163,17 +163,20 @@
 
 void EditorClientEfl::registerCommandForUndo(WTF::PassRefPtr<EditCommand> command)
 {
-    undoStack.append(command);
+    if (!m_isInRedo)
+        redoStack.clear();
+    undoStack.prepend(command);
 }
 
-void EditorClientEfl::registerCommandForRedo(WTF::PassRefPtr<EditCommand>)
+void EditorClientEfl::registerCommandForRedo(WTF::PassRefPtr<EditCommand> command)
 {
-    notImplemented();
+    redoStack.prepend(command);
 }
 
 void EditorClientEfl::clearUndoRedoOperations()
 {
     undoStack.clear();
+    redoStack.clear();
 }
 
 bool EditorClientEfl::canCopyCut(Frame*, bool defaultValue) const
@@ -193,20 +196,27 @@
 
 bool EditorClientEfl::canRedo() const
 {
-    notImplemented();
-    return false;
+    return !redoStack.isEmpty();
 }
 
 void EditorClientEfl::undo()
 {
-    RefPtr<WebCore::EditCommand> command(*(--undoStack.end()));
-    undoStack.remove(--undoStack.end());
-    command->unapply();
+    if (canUndo()) {
+        RefPtr<WebCore::EditCommand> command = undoStack.takeFirst();
+        command->unapply();
+    }
 }
 
 void EditorClientEfl::redo()
 {
-    notImplemented();
+    if (canRedo()) {
+        RefPtr<WebCore::EditCommand> command = redoStack.takeFirst();
+
+        ASSERT(!m_isInRedo);
+        m_isInRedo = true;
+        command->reapply();
+        m_isInRedo = false;
+    }
 }
 
 bool EditorClientEfl::shouldInsertNode(Node*, Range*, EditorInsertAction)
@@ -425,8 +435,9 @@
 {
 }
 
-EditorClientEfl::EditorClientEfl(Evas_Object *view)
-    : m_view(view)
+EditorClientEfl::EditorClientEfl(Evas_Object* view)
+    : m_isInRedo(false)
+    , m_view(view)
 {
     notImplemented();
 }

Modified: trunk/Source/WebKit/efl/WebCoreSupport/EditorClientEfl.h (90807 => 90808)


--- trunk/Source/WebKit/efl/WebCoreSupport/EditorClientEfl.h	2011-07-12 04:54:54 UTC (rev 90807)
+++ trunk/Source/WebKit/efl/WebCoreSupport/EditorClientEfl.h	2011-07-12 05:58:21 UTC (rev 90808)
@@ -46,7 +46,9 @@
 
 class EditorClientEfl : public EditorClient, public TextCheckerClient {
 protected:
+    bool m_isInRedo;
     WTF::Deque<WTF::RefPtr<WebCore::EditCommand> > undoStack;
+    WTF::Deque<WTF::RefPtr<WebCore::EditCommand> > redoStack;
 
 public:
     EditorClientEfl(Evas_Object *view);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to