Browse Source

VWebView: add Copy All without Background action

Le Tan 8 years ago
parent
commit
c4d72183b5
2 changed files with 23 additions and 3 deletions
  1. 21 3
      src/vwebview.cpp
  2. 2 0
      src/vwebview.h

+ 21 - 3
src/vwebview.cpp

@@ -101,6 +101,15 @@ void VWebView::contextMenuEvent(QContextMenuEvent *p_event)
     }
 #endif
 
+    // Add Copy All without Background action.
+    QAction *copyAllWithoutBgAct = new QAction(tr("Copy &All without Background"), menu);
+    copyAllWithoutBgAct->setToolTip(tr("Copy all contents without background styles"));
+    connect(copyAllWithoutBgAct, &QAction::triggered,
+            this, &VWebView::handleCopyAllWithoutBackgroundAction);
+    // Add it to the back.
+    menu->addSeparator();
+    menu->addAction(copyAllWithoutBgAct);
+
     hideUnusedActions(menu);
 
     menu->exec(p_event->globalPos());
@@ -228,8 +237,17 @@ void VWebView::handleCopyWithoutBackgroundAction()
 {
     m_needRemoveBackground = true;
 
-    QAction *copyAct = pageAction(QWebEnginePage::Copy);
-    copyAct->trigger();
+    triggerPageAction(QWebEnginePage::Copy);
+}
+
+void VWebView::handleCopyAllWithoutBackgroundAction()
+{
+    triggerPageAction(QWebEnginePage::SelectAll);
+
+    m_needRemoveBackground = true;
+    triggerPageAction(QWebEnginePage::Copy);
+
+    triggerPageAction(QWebEnginePage::Unselect);
 }
 
 void VWebView::handleClipboardChanged(QClipboard::Mode p_mode)
@@ -337,5 +355,5 @@ void VWebView::alterHtmlMimeData(QClipboard *p_clipboard,
     data->setHtml(html);
 
     VClipboardUtils::setMimeDataToClipboard(p_clipboard, data, QClipboard::Clipboard);
-    qDebug() << "altered clipboard's Html" << html;
+    qDebug() << "altered clipboard's Html";
 }

+ 2 - 0
src/vwebview.h

@@ -27,6 +27,8 @@ private slots:
 
     void handleCopyWithoutBackgroundAction();
 
+    void handleCopyAllWithoutBackgroundAction();
+
     // Copy the clicked image.
     // Used to replace the default CopyImageToClipboard action.
     void copyImage();