Include 'Inspect element' in all menus and show Copy in link menus

This commit is contained in:
Christian Dywan 2009-12-27 16:58:37 +01:00
parent bd078ed1dd
commit 2d80e60106

View file

@ -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); 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* static GtkWidget*
midori_view_insert_menu_item (GtkMenuShell* menu, midori_view_insert_menu_item (GtkMenuShell* menu,
gint position, gint position,
@ -1763,9 +1778,7 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
/* Form control: separator and Inspect element */ /* Form control: separator and Inspect element */
if (GTK_IS_SEPARATOR_MENU_ITEM (menuitem) && g_list_length (items) == 2) if (GTK_IS_SEPARATOR_MENU_ITEM (menuitem) && g_list_length (items) == 2)
{ {
i = 0; gtk_widget_destroy (menuitem);
while ((menuitem = g_list_nth_data (items, i++)))
gtk_widget_destroy (menuitem);
g_list_free (items); g_list_free (items);
return; return;
} }
@ -1783,8 +1796,7 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
} }
#if WEBKIT_CHECK_VERSION (1, 1, 15) #if WEBKIT_CHECK_VERSION (1, 1, 15)
/* FIXME: We can't re-implement Open in Frame or Inspect page, /* FIXME: We can't re-implement Open in Frame */
so we can't replace the default document menu */
if (!is_document) if (!is_document)
{ {
items = gtk_container_get_children (GTK_CONTAINER (menu)); 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, _("Download with Download _Manager"), STOCK_TRANSFER,
G_CALLBACK (midori_web_view_menu_video_download_activate_cb), widget); 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 #else
if (view->link_uri) 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, midori_view_insert_menu_item (menu_shell, 0,
_("_Search the Web"), GTK_STOCK_FIND, _("_Search the Web"), GTK_STOCK_FIND,
G_CALLBACK (midori_web_view_menu_search_web_activate_cb), widget); 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 #else
items = gtk_container_get_children (GTK_CONTAINER (menu)); items = gtk_container_get_children (GTK_CONTAINER (menu));
menuitem = (GtkWidget*)g_list_nth_data (items, 0); menuitem = (GtkWidget*)g_list_nth_data (items, 0);
@ -1986,9 +2001,7 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
if (is_document) if (is_document)
{ {
/* FIXME: We can't re-implement Open in Frame or Inspect page #if 0 /* WEBKIT_CHECK_VERSION (1, 1, 15) */
#if WEBKIT_CHECK_VERSION (1, 1, 15) */
#if 0
menuitem = sokoke_action_create_popup_menu_item ( menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "Back")); gtk_action_group_get_action (actions, "Back"));
gtk_menu_shell_append (menu_shell, menuitem); gtk_menu_shell_append (menu_shell, menuitem);
@ -2023,10 +2036,10 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
g_list_free (items); g_list_free (items);
#endif #endif
gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ());
menuitem = sokoke_action_create_popup_menu_item ( menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "UndoTabClose")); gtk_action_group_get_action (actions, "UndoTabClose"));
gtk_menu_shell_append (menu_shell, menuitem); 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_CHECK_VERSION (1, 1, 15)
/* if (webkit_web_view_get_main_frame (web_view) != frame_under_mouse) /* 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, _("Open _Frame in New Window"), NULL,
G_CALLBACK (midori_web_view_menu_frame_new_window_activate_cb), widget); 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 #endif
if (!g_object_get_data (G_OBJECT (browser), "midori-toolbars-visible")) 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); 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); gtk_widget_show_all (menu);
} }