File indexing completed on 2024-04-21 03:49:45

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2012 Illya Kovalevskyy <illya.kovalevskyy@gmail.com>
0004 //
0005 
0006 #include "MarbleWebView.h"
0007 #include <QApplication>
0008 #include <QMenu>
0009 #include <QContextMenuEvent>
0010 #include <QKeyEvent>
0011 #include <QClipboard>
0012 
0013 MarbleWebView::MarbleWebView(QWidget *parent) :
0014     QWebEngineView(parent),
0015     m_contextMenu(new QMenu(this)),
0016     m_copyAction(new QAction(this))
0017 {
0018     m_copyAction->setText(tr("Copy"));
0019     m_copyAction->setIcon(QIcon(QStringLiteral(":/icons/edit-copy.png")));
0020     m_copyAction->setIconVisibleInMenu(true);
0021     m_copyAction->setToolTip(tr("Copy selected content"));
0022     connect(m_copyAction, SIGNAL(triggered()),
0023             this, SLOT(copySelectedText()));
0024     m_contextMenu->addAction(m_copyAction);
0025     setContextMenuPolicy(Qt::DefaultContextMenu);
0026 }
0027 
0028 void MarbleWebView::contextMenuEvent(QContextMenuEvent *event)
0029 {
0030     m_copyAction->setEnabled(!selectedText().isEmpty());
0031     m_contextMenu->exec(event->globalPos());
0032 }
0033 
0034 void MarbleWebView::copySelectedText()
0035 {
0036     const QString text = selectedText();
0037     if (!text.isEmpty()) {
0038         QClipboard *clipboard = QApplication::clipboard();
0039         clipboard->setText(text);
0040     }
0041 }
0042 
0043 void MarbleWebView::keyPressEvent(QKeyEvent *event)
0044 {
0045     if(event->modifiers() == Qt::ControlModifier && event->key() == Qt::Key_C) {
0046         copySelectedText();
0047         return;
0048     }
0049 
0050     QWebEngineView::keyPressEvent(event);
0051 }
0052 
0053 #include "moc_MarbleWebView.cpp"