Git commit e1cfdc471b5e50edad049048b7f0de3883c1ea03 by Jan Kundrát. Committed on 27/01/2016 at 14:19. Pushed by gerrit into branch 'master'.
GUI: refactor custom action for WebView's context menu There's really no need for the MessageView to poke within the SimplePartWidget's internal stuff and for testing its hit contents; this should be done by the SimplePartWidget alone. Also reorder the resulting actions in a (subjectively) better way -- context-specific actions at the top, with the global ones at the bottom. Change-Id: If2cec5381ad1f93fb3f16f188963d9f293e94689 M +1 -8 src/Gui/MessageView.cpp M +12 -2 src/Gui/SimplePartWidget.cpp M +1 -1 src/Gui/SimplePartWidget.h http://commits.kde.org/trojita/e1cfdc471b5e50edad049048b7f0de3883c1ea03 diff --git a/src/Gui/MessageView.cpp b/src/Gui/MessageView.cpp index 44d6a09..5ed37e1 100644 --- a/src/Gui/MessageView.cpp +++ b/src/Gui/MessageView.cpp @@ -446,14 +446,7 @@ void MessageView::partContextMenuRequested(const QPoint &point) { if (SimplePartWidget *w = qobject_cast<SimplePartWidget *>(sender())) { QMenu menu(w); - Q_FOREACH(QAction *action, w->contextMenuSpecificActions()) - menu.addAction(action); - menu.addAction(w->pageAction(QWebPage::Copy)); - menu.addAction(w->pageAction(QWebPage::SelectAll)); - if (!w->page()->mainFrame()->hitTestContent(point).linkUrl().isEmpty()) { - menu.addSeparator(); - menu.addAction(w->pageAction(QWebPage::CopyLinkToClipboard)); - } + w->buildContextMenu(point, menu); menu.exec(w->mapToGlobal(point)); } } diff --git a/src/Gui/SimplePartWidget.cpp b/src/Gui/SimplePartWidget.cpp index d9eb92b..48cc1bb 100644 --- a/src/Gui/SimplePartWidget.cpp +++ b/src/Gui/SimplePartWidget.cpp @@ -22,6 +22,7 @@ #include <QApplication> #include <QFileDialog> #include <QFontDatabase> +#include <QMenu> #include <QNetworkReply> #include <QWebFrame> @@ -141,9 +142,18 @@ void SimplePartWidget::reloadContents() EmbeddedWebView::reload(); } -QList<QAction *> SimplePartWidget::contextMenuSpecificActions() const +void SimplePartWidget::buildContextMenu(const QPoint &point, QMenu &menu) const { - return QList<QAction*>() << m_savePart << m_saveMessage << m_findAction; + menu.addAction(m_findAction); + menu.addAction(pageAction(QWebPage::Copy)); + menu.addAction(pageAction(QWebPage::SelectAll)); + if (!page()->mainFrame()->hitTestContent(point).linkUrl().isEmpty()) { + menu.addSeparator(); + menu.addAction(pageAction(QWebPage::CopyLinkToClipboard)); + } + menu.addSeparator(); + menu.addAction(m_savePart); + menu.addAction(m_saveMessage); } void SimplePartWidget::slotDownloadPart() diff --git a/src/Gui/SimplePartWidget.h b/src/Gui/SimplePartWidget.h index 517b4cb..bb7f559 100644 --- a/src/Gui/SimplePartWidget.h +++ b/src/Gui/SimplePartWidget.h @@ -59,7 +59,7 @@ public: MessageView *messageView); virtual QString quoteMe() const; virtual void reloadContents(); - QList<QAction *> contextMenuSpecificActions() const; + void buildContextMenu(const QPoint &point, QMenu &menu) const; private slots: void slotFileNameRequested(QString *fileName); void slotMarkupPlainText(); _______________________________________________ kde-doc-english mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-doc-english
