From 2d80e601062c23687d71b8054b355346efd4dbb1 Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Sun, 27 Dec 2009 16:58:37 +0100 Subject: [PATCH] Include 'Inspect element' in all menus and show Copy in link menus --- midori/midori-view.c | 57 ++++++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/midori/midori-view.c b/midori/midori-view.c index bfc55bf9..fb8915b1 100644 --- a/midori/midori-view.c +++ b/midori/midori-view.c @@ -1621,6 +1621,21 @@ midori_web_view_menu_add_bookmark_activate_cb (GtkWidget* widget, g_signal_emit (view, signals[ADD_BOOKMARK], 0, view->link_uri); } +#if WEBKIT_CHECK_VERSION (1, 1, 17) +static void +midori_web_view_menu_inspect_element_activate_cb (GtkWidget* widget, + MidoriView* view) +{ + WebKitWebInspector* inspector; + gint x, y; + + inspector = webkit_web_view_get_inspector (WEBKIT_WEB_VIEW (view->web_view)); + x = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "x")); + y = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "y")); + webkit_web_inspector_inspect_coordinates (inspector, x, y); +} +#endif + static GtkWidget* midori_view_insert_menu_item (GtkMenuShell* menu, gint position, @@ -1763,9 +1778,7 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view, /* Form control: separator and Inspect element */ if (GTK_IS_SEPARATOR_MENU_ITEM (menuitem) && g_list_length (items) == 2) { - i = 0; - while ((menuitem = g_list_nth_data (items, i++))) - gtk_widget_destroy (menuitem); + gtk_widget_destroy (menuitem); g_list_free (items); return; } @@ -1783,8 +1796,7 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view, } #if WEBKIT_CHECK_VERSION (1, 1, 15) - /* FIXME: We can't re-implement Open in Frame or Inspect page, - so we can't replace the default document menu */ + /* FIXME: We can't re-implement Open in Frame */ if (!is_document) { items = gtk_container_get_children (GTK_CONTAINER (menu)); @@ -1857,6 +1869,13 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view, _("Download with Download _Manager"), STOCK_TRANSFER, G_CALLBACK (midori_web_view_menu_video_download_activate_cb), widget); } + + if (has_selection) + { + gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ()); + midori_view_insert_menu_item (menu_shell, -1, NULL, GTK_STOCK_COPY, + G_CALLBACK (midori_web_view_menu_copy_activate_cb), widget); + } #else if (view->link_uri) { @@ -1947,10 +1966,6 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view, midori_view_insert_menu_item (menu_shell, 0, _("_Search the Web"), GTK_STOCK_FIND, G_CALLBACK (midori_web_view_menu_search_web_activate_cb), widget); - gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ()); - midori_view_insert_menu_item (menu_shell, -1, - NULL, GTK_STOCK_COPY, - G_CALLBACK (midori_web_view_menu_copy_activate_cb), widget); #else items = gtk_container_get_children (GTK_CONTAINER (menu)); menuitem = (GtkWidget*)g_list_nth_data (items, 0); @@ -1986,9 +2001,7 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view, if (is_document) { - /* FIXME: We can't re-implement Open in Frame or Inspect page - #if WEBKIT_CHECK_VERSION (1, 1, 15) */ - #if 0 + #if 0 /* WEBKIT_CHECK_VERSION (1, 1, 15) */ menuitem = sokoke_action_create_popup_menu_item ( gtk_action_group_get_action (actions, "Back")); gtk_menu_shell_append (menu_shell, menuitem); @@ -2023,10 +2036,10 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view, g_list_free (items); #endif + gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ()); menuitem = sokoke_action_create_popup_menu_item ( gtk_action_group_get_action (actions, "UndoTabClose")); gtk_menu_shell_append (menu_shell, menuitem); - gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ()); #if WEBKIT_CHECK_VERSION (1, 1, 15) /* if (webkit_web_view_get_main_frame (web_view) != frame_under_mouse) @@ -2038,11 +2051,6 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view, _("Open _Frame in New Window"), NULL, G_CALLBACK (midori_web_view_menu_frame_new_window_activate_cb), widget); } */ - - /* FIXME: There is currently no API to inspect an URI - midori_view_insert_menu_item (menu_shell, -1, - _("Inspect page"), NULL, - G_CALLBACK (midori_web_view_menu_inspect_page_activate_cb), widget); */ #endif if (!g_object_get_data (G_OBJECT (browser), "midori-toolbars-visible")) @@ -2130,6 +2138,19 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view, gtk_menu_shell_append (menu_shell, menuitem); } + #if WEBKIT_CHECK_VERSION (1, 1, 17) + if (!is_document && view->settings + && katze_object_get_boolean (view->settings, "enable-developer-extras")) + { + gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ()); + menuitem = midori_view_insert_menu_item (menu_shell, -1, + _("Inspect _Element"), NULL, + G_CALLBACK (midori_web_view_menu_inspect_element_activate_cb), widget); + g_object_set_data (G_OBJECT (menuitem), "x", GINT_TO_POINTER (x)); + g_object_set_data (G_OBJECT (menuitem), "y", GINT_TO_POINTER (y)); + } + #endif + gtk_widget_show_all (menu); } -- 2.39.5