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"