From e70299ee2bc025a94c32153b7aa61b17f73f75a1 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Thu, 7 May 2009 11:37:48 +0200 Subject: Improved contextual menu usability --- src/webview.cpp | 69 ++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 23 deletions(-) (limited to 'src/webview.cpp') diff --git a/src/webview.cpp b/src/webview.cpp index a8efaa2d..4ae3986f 100644 --- a/src/webview.cpp +++ b/src/webview.cpp @@ -375,6 +375,35 @@ void WebView::contextMenuEvent(QContextMenuEvent *event) addBookmarkAction->setData(QVariant()); KMenu menu(this); + + // cut - copy - paste Actions. + // If someone selects text perhaps wanna work with it.. + bool b = false; + + if (result.isContentSelected() && result.isContentEditable()) + { + menu.addAction(webActions()->action("edit_cut")); + b = true; + } + + if (result.isContentSelected()) + { + menu.addAction(webActions()->action("edit_copy")); + b = true; + } + + if (result.isContentEditable()) + { + menu.addAction(webActions()->action("edit_paste")); + b = true; + } + + if(b) + { + menu.addSeparator(); + } + + // link actions bool linkIsEmpty = result.linkUrl().isEmpty(); if (!linkIsEmpty) { @@ -387,48 +416,42 @@ void WebView::contextMenuEvent(QContextMenuEvent *event) menu.addAction(mainwindow->actionByName("view_redisplay")); menu.addSeparator(); + // Developer Extras actions if (page()->settings()->testAttribute(QWebSettings::DeveloperExtrasEnabled)) { menu.addAction(webActions()->action("inspect_element")); menu.addSeparator(); } - menu.addAction(mainwindow->actionByName("history_back")); - menu.addAction(mainwindow->actionByName("history_forward")); - menu.addSeparator(); - - if (result.isContentSelected() && result.isContentEditable()) - { - menu.addAction(webActions()->action("edit_cut")); - } - - if (result.isContentSelected()) - { - menu.addAction(webActions()->action("edit_copy")); - } - - if (result.isContentEditable()) - { - menu.addAction(webActions()->action("edit_paste")); - } - + // save/copy link actions if (!linkIsEmpty) { + menu.addAction(webActions()->action("save_link_as")); + menu.addAction(webActions()->action("copy_link_location")); menu.addSeparator(); + if (!result.pixmap().isNull()) { // TODO Add "View Image" menu.addAction(webActions()->action("save_image_as")); menu.addAction(webActions()->action("copy_this_image")); + menu.addSeparator(); } - menu.addAction(webActions()->action("save_link_as")); - menu.addAction(webActions()->action("copy_link_location")); + } + + // history actions + menu.addAction(mainwindow->actionByName("history_back")); + menu.addAction(mainwindow->actionByName("history_forward")); + + // bookmark link action + if (!linkIsEmpty) + { + menu.addSeparator(); addBookmarkAction->setData(result.linkUrl()); addBookmarkAction->setText(i18n("&Bookmark This Link")); + menu.addAction(addBookmarkAction); } - menu.addSeparator(); - menu.addAction(addBookmarkAction); menu.exec(mapToGlobal(event->pos())); } -- cgit v1.2.1