From a6b35538acf4e3a8aad64932d8514040e2d36e68 Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Tue, 18 Feb 2014 14:06:54 +0100 Subject: Implement basic editing actions for QWebEnginePage Change-Id: I1b58d2b2e86f60e296ae48095ed8d5e8172e0d1e Reviewed-by: Pierre Rossi --- src/core/web_contents_adapter.cpp | 42 +++++++++++++++++++++++++++ src/core/web_contents_adapter.h | 8 ++++++ src/webenginewidgets/api/qwebenginepage.cpp | 44 ++++++++++++++++++++++++++++- 3 files changed, 93 insertions(+), 1 deletion(-) diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 59d89824f..90d358f99 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -326,6 +326,48 @@ QString WebContentsAdapter::selectedText() const return toQt(d->webContents->GetRenderViewHost()->GetView()->GetSelectedText()); } +void WebContentsAdapter::undo() +{ + Q_D(const WebContentsAdapter); + d->webContents->GetRenderViewHost()->Undo(); +} + +void WebContentsAdapter::redo() +{ + Q_D(const WebContentsAdapter); + d->webContents->GetRenderViewHost()->Redo(); +} + +void WebContentsAdapter::cut() +{ + Q_D(const WebContentsAdapter); + d->webContents->GetRenderViewHost()->Cut(); +} + +void WebContentsAdapter::copy() +{ + Q_D(const WebContentsAdapter); + d->webContents->GetRenderViewHost()->Copy(); +} + +void WebContentsAdapter::paste() +{ + Q_D(const WebContentsAdapter); + d->webContents->GetRenderViewHost()->Paste(); +} + +void WebContentsAdapter::pasteAndMatchStyle() +{ + Q_D(const WebContentsAdapter); + d->webContents->GetRenderViewHost()->PasteAndMatchStyle(); +} + +void WebContentsAdapter::selectAll() +{ + Q_D(const WebContentsAdapter); + d->webContents->GetRenderViewHost()->SelectAll(); +} + void WebContentsAdapter::navigateToIndex(int offset) { Q_D(WebContentsAdapter); diff --git a/src/core/web_contents_adapter.h b/src/core/web_contents_adapter.h index 4cef56103..3e5a0e24b 100644 --- a/src/core/web_contents_adapter.h +++ b/src/core/web_contents_adapter.h @@ -73,6 +73,14 @@ public: QString pageTitle() const; QString selectedText() const; + void undo(); + void redo(); + void cut(); + void copy(); + void paste(); + void pasteAndMatchStyle(); + void selectAll(); + void navigateToIndex(int); void navigateToOffset(int); int navigationEntryCount(); diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index ca1c203dd..74b74abf1 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -289,7 +289,7 @@ void QWebEnginePagePrivate::updateAction(QWebEnginePage::WebAction action) const if (!a) return; - bool enabled = false; + bool enabled = true; switch (action) { case QWebEnginePage::Back: @@ -405,6 +405,27 @@ QAction *QWebEnginePage::action(WebAction action) const text = tr("Reload"); icon = style->standardIcon(QStyle::SP_BrowserReload); break; + case Cut: + text = tr("Cut"); + break; + case Copy: + text = tr("Copy"); + break; + case Paste: + text = tr("Paste"); + break; + case Undo: + text = tr("Undo"); + break; + case Redo: + text = tr("Redo"); + break; + case SelectAll: + text = tr("Select All"); + break; + case PasteAndMatchStyle: + text = tr("Paste and Match Style"); + break; default: break; } @@ -438,6 +459,27 @@ void QWebEnginePage::triggerAction(WebAction action, bool) case Reload: d->adapter->reload(); break; + case Cut: + d->adapter->cut(); + break; + case Copy: + d->adapter->copy(); + break; + case Paste: + d->adapter->paste(); + break; + case Undo: + d->adapter->undo(); + break; + case Redo: + d->adapter->redo(); + break; + case SelectAll: + d->adapter->selectAll(); + break; + case PasteAndMatchStyle: + d->adapter->pasteAndMatchStyle(); + break; default: Q_UNREACHABLE(); } -- cgit v1.2.3