WebView: fix context menu in preview mode

This commit is contained in:
Le Tan 2018-07-20 20:06:55 +08:00
parent 41bf2d9cec
commit 25ec41c3f0

View File

@ -41,11 +41,6 @@ VWebView::VWebView(VFile *p_file, QWidget *p_parent)
void VWebView::contextMenuEvent(QContextMenuEvent *p_event) void VWebView::contextMenuEvent(QContextMenuEvent *p_event)
{ {
if (m_inPreview) {
QWebEngineView::contextMenuEvent(p_event);
return;
}
QMenu *menu = page()->createStandardContextMenu(); QMenu *menu = page()->createStandardContextMenu();
menu->setToolTipsVisible(true); menu->setToolTipsVisible(true);
@ -69,7 +64,10 @@ void VWebView::contextMenuEvent(QContextMenuEvent *p_event)
} }
#endif #endif
if (!hasSelection() && m_file && m_file->isModifiable()) { if (!hasSelection()
&& !m_inPreview
&& m_file
&& m_file->isModifiable()) {
QAction *editAct= new QAction(VIconUtils::menuIcon(":/resources/icons/edit_note.svg"), QAction *editAct= new QAction(VIconUtils::menuIcon(":/resources/icons/edit_note.svg"),
tr("&Edit"), menu); tr("&Edit"), menu);
editAct->setToolTip(tr("Edit current note")); editAct->setToolTip(tr("Edit current note"));
@ -84,7 +82,7 @@ void VWebView::contextMenuEvent(QContextMenuEvent *p_event)
// Add Copy As menu. // Add Copy As menu.
QAction *copyAct = pageAction(QWebEnginePage::Copy); QAction *copyAct = pageAction(QWebEnginePage::Copy);
if (actions.contains(copyAct)) { if (actions.contains(copyAct) && !m_inPreview) {
initCopyAsMenu(copyAct, menu); initCopyAsMenu(copyAct, menu);
} }
@ -102,7 +100,7 @@ void VWebView::contextMenuEvent(QContextMenuEvent *p_event)
defaultCopyImageAct->setVisible(false); defaultCopyImageAct->setVisible(false);
} }
if (!hasSelection()) { if (!hasSelection() && !m_inPreview) {
QAction *savePageAct = new QAction(QWebEnginePage::tr("Save &Page"), menu); QAction *savePageAct = new QAction(QWebEnginePage::tr("Save &Page"), menu);
connect(savePageAct, &QAction::triggered, connect(savePageAct, &QAction::triggered,
this, &VWebView::requestSavePage); this, &VWebView::requestSavePage);
@ -110,13 +108,26 @@ void VWebView::contextMenuEvent(QContextMenuEvent *p_event)
} }
// Add Copy All As menu. // Add Copy All As menu.
if (!m_inPreview) {
initCopyAllAsMenu(menu); initCopyAllAsMenu(menu);
}
hideUnusedActions(menu); hideUnusedActions(menu);
p_event->accept(); p_event->accept();
bool valid = false;
for (auto act : menu->actions()) {
if (act->isVisible()) {
valid = true;
break;
}
}
if (valid) {
menu->exec(p_event->globalPos()); menu->exec(p_event->globalPos());
}
delete menu; delete menu;
} }