Title: [103097] trunk/Source/WebKit2
- Revision
- 103097
- Author
- commit-qu...@webkit.org
- Date
- 2011-12-16 12:55:10 -0800 (Fri, 16 Dec 2011)
Log Message
[Qt] Eliminate dependency to QUndoStack
https://bugs.webkit.org/show_bug.cgi?id=74691
Patch by Simon Hausmann <simon.hausm...@nokia.com> on 2011-12-16
Reviewed by Kenneth Rohde Christiansen.
Replaced the QUndoStack with two vectors. When calling unapply()
on the edit command proxy, it will automatically re-register itself
in the redo stack.
* UIProcess/qt/QtWebUndoController.cpp:
(QtWebUndoController::registerEditCommand):
(QtWebUndoController::clearAllEditCommands):
(QtWebUndoController::canUndoRedo):
(QtWebUndoController::executeUndoRedo):
* UIProcess/qt/QtWebUndoController.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (103096 => 103097)
--- trunk/Source/WebKit2/ChangeLog 2011-12-16 20:50:31 UTC (rev 103096)
+++ trunk/Source/WebKit2/ChangeLog 2011-12-16 20:55:10 UTC (rev 103097)
@@ -1,3 +1,21 @@
+2011-12-16 Simon Hausmann <simon.hausm...@nokia.com>
+
+ [Qt] Eliminate dependency to QUndoStack
+ https://bugs.webkit.org/show_bug.cgi?id=74691
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Replaced the QUndoStack with two vectors. When calling unapply()
+ on the edit command proxy, it will automatically re-register itself
+ in the redo stack.
+
+ * UIProcess/qt/QtWebUndoController.cpp:
+ (QtWebUndoController::registerEditCommand):
+ (QtWebUndoController::clearAllEditCommands):
+ (QtWebUndoController::canUndoRedo):
+ (QtWebUndoController::executeUndoRedo):
+ * UIProcess/qt/QtWebUndoController.h:
+
2011-12-16 Rafael Brandao <rafael.l...@openbossa.org>
[Qt][WK2] Move webView.page into experimental
Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebUndoController.cpp (103096 => 103097)
--- trunk/Source/WebKit2/UIProcess/qt/QtWebUndoController.cpp 2011-12-16 20:50:31 UTC (rev 103096)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebUndoController.cpp 2011-12-16 20:55:10 UTC (rev 103097)
@@ -21,96 +21,43 @@
#include "config.h"
#include "QtWebUndoController.h"
-#include "WebEditCommandProxy.h"
#include <qglobal.h>
#include <wtf/RefPtr.h>
using namespace WebKit;
-class QtWebUndoCommand : public QUndoCommand {
-public:
- QtWebUndoCommand(PassRefPtr<WebEditCommandProxy>, QUndoCommand* parent = 0);
- ~QtWebUndoCommand();
-
- void redo();
- void undo();
-
- bool inUndoRedo() const { return m_inUndoRedo; };
-
-private:
- RefPtr<WebEditCommandProxy> m_command;
- bool m_first;
- bool m_inUndoRedo;
-};
-
-QtWebUndoCommand::QtWebUndoCommand(PassRefPtr<WebEditCommandProxy> command, QUndoCommand* parent)
- : QUndoCommand(parent)
- , m_command(command)
- , m_first(true)
- , m_inUndoRedo(false)
-{
-}
-
-QtWebUndoCommand::~QtWebUndoCommand()
-{
-}
-
-void QtWebUndoCommand::redo()
-{
- m_inUndoRedo = true;
-
- // Ignore the first redo called from QUndoStack::push().
- if (m_first) {
- m_first = false;
- m_inUndoRedo = false;
- return;
- }
- if (m_command)
- m_command->reapply();
-
- m_inUndoRedo = false;
-}
-
-void QtWebUndoCommand::undo()
-{
- m_inUndoRedo = true;
-
- if (m_command)
- m_command->unapply();
-
- m_inUndoRedo = false;
-}
-
-QtWebUndoController::QtWebUndoController()
-{
-}
-
void QtWebUndoController::registerEditCommand(PassRefPtr<WebEditCommandProxy> command, WebPageProxy::UndoOrRedo undoOrRedo)
{
- if (undoOrRedo == WebPageProxy::Undo) {
- const QtWebUndoCommand* webUndoCommand = static_cast<const QtWebUndoCommand*>(m_undoStack.command(m_undoStack.index()));
- if (webUndoCommand && webUndoCommand->inUndoRedo())
- return;
- m_undoStack.push(new QtWebUndoCommand(command));
- }
+ if (undoOrRedo == WebPageProxy::Undo)
+ m_undoStack.append(command);
+ else
+ m_redoStack.append(command);
}
void QtWebUndoController::clearAllEditCommands()
{
m_undoStack.clear();
+ m_redoStack.clear();
}
bool QtWebUndoController::canUndoRedo(WebPageProxy::UndoOrRedo undoOrRedo)
{
if (undoOrRedo == WebPageProxy::Undo)
- return m_undoStack.canUndo();
- return m_undoStack.canRedo();
+ return !m_undoStack.isEmpty();
+ else
+ return !m_redoStack.isEmpty();
}
void QtWebUndoController::executeUndoRedo(WebPageProxy::UndoOrRedo undoOrRedo)
{
- if (undoOrRedo == WebPageProxy::Undo)
- m_undoStack.undo();
- else
- m_undoStack.redo();
+ RefPtr<WebEditCommandProxy> command;
+ if (undoOrRedo == WebPageProxy::Undo) {
+ command = m_undoStack.last();
+ m_undoStack.removeLast();
+ command->unapply();
+ } else {
+ command = m_redoStack.last();
+ m_redoStack.removeLast();
+ command->reapply();
+ }
}
Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebUndoController.h (103096 => 103097)
--- trunk/Source/WebKit2/UIProcess/qt/QtWebUndoController.h 2011-12-16 20:50:31 UTC (rev 103096)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebUndoController.h 2011-12-16 20:55:10 UTC (rev 103097)
@@ -22,23 +22,20 @@
#define QtWebUndoController_h
#include "PageClient.h"
+#include "WebEditCommandProxy.h"
#include "WebPageProxy.h"
-#include <QUndoStack>
class QtWebUndoController {
public:
- QtWebUndoController();
-
-private:
- friend class QtPageClient;
-
// Page Client.
void registerEditCommand(PassRefPtr<WebKit::WebEditCommandProxy>, WebKit::WebPageProxy::UndoOrRedo);
void clearAllEditCommands();
bool canUndoRedo(WebKit::WebPageProxy::UndoOrRedo);
void executeUndoRedo(WebKit::WebPageProxy::UndoOrRedo);
- QUndoStack m_undoStack;
+ typedef Vector<RefPtr<WebKit::WebEditCommandProxy> > CommandVector;
+ CommandVector m_undoStack;
+ CommandVector m_redoStack;
};
#endif // QtWebUndoController_h
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes