Improve context menu and middle click pasting using hit test result

This commit is contained in:
Christian Dywan 2009-09-18 23:47:31 +02:00
parent a158ac4585
commit eaba9f0acf
2 changed files with 226 additions and 75 deletions

View file

@ -487,7 +487,7 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
gtk_button_set_label (GTK_BUTTON (button), _("Load images automatically")); gtk_button_set_label (GTK_BUTTON (button), _("Load images automatically"));
gtk_widget_set_tooltip_text (button, _("Load and display images automatically")); gtk_widget_set_tooltip_text (button, _("Load and display images automatically"));
INDENTED_ADD (button, 0, 1, 0, 1); INDENTED_ADD (button, 0, 1, 0, 1);
#if 0 #if WEBKIT_CHECK_VERSION (1, 1, 15)
button = katze_property_proxy (settings, "auto-shrink-images", NULL); button = katze_property_proxy (settings, "auto-shrink-images", NULL);
gtk_button_set_label (GTK_BUTTON (button), _("Shrink images automatically")); gtk_button_set_label (GTK_BUTTON (button), _("Shrink images automatically"));
gtk_widget_set_tooltip_text (button, _("Automatically shrink standalone images to fit")); gtk_widget_set_tooltip_text (button, _("Automatically shrink standalone images to fit"));

View file

@ -1028,16 +1028,28 @@ gtk_widget_button_press_event_cb (WebKitWebView* web_view,
} }
else if (view->middle_click_opens_selection) else if (view->middle_click_opens_selection)
{ {
guint i = 0; #if WEBKIT_CHECK_VERSION (1, 1, 15)
/* FIXME: This isn't quite correct, we need mouse context */ WebKitHitTestResult* result;
if (webkit_web_view_can_paste_clipboard (WEBKIT_WEB_VIEW (view->web_view))) WebKitHitTestResultContext context;
gboolean is_editable;
result = webkit_web_view_get_hit_test_result (web_view, event);
context = katze_object_get_int (result, "context");
is_editable = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE;
g_object_unref (result);
#else
is_editable = webkit_web_view_can_paste_clipboard (WEBKIT_WEB_VIEW (view->web_view));
#endif
if (is_editable)
return FALSE; return FALSE;
clipboard = gtk_clipboard_get_for_display ( clipboard = gtk_clipboard_get_for_display (
gtk_widget_get_display (GTK_WIDGET (view)), gtk_widget_get_display (GTK_WIDGET (view)),
GDK_SELECTION_PRIMARY); GDK_SELECTION_PRIMARY);
uri = gtk_clipboard_wait_for_text (clipboard); uri = gtk_clipboard_wait_for_text (clipboard);
if (uri && strchr (uri, '.')) if (uri && strchr (uri, '.'))
{ {
guint i = 0;
while (uri[i++] != '\0') while (uri[i++] != '\0')
if (uri[i] == '\n' || uri[i] == '\r') if (uri[i] == '\n' || uri[i] == '\r')
uri[i] = ' '; uri[i] = ' ';
@ -1195,6 +1207,42 @@ 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);
} }
static GtkWidget*
midori_view_insert_menu_item (GtkMenuShell* menu,
gint position,
const gchar* label,
const gchar* stock_id,
GCallback callback,
GtkWidget* widget)
{
GtkWidget* menuitem;
if (label)
{
menuitem = gtk_image_menu_item_new_with_mnemonic (label);
if (stock_id)
{
GdkScreen* screen = gtk_widget_get_screen (widget);
GtkIconTheme* icon_theme = gtk_icon_theme_get_for_screen (screen);
if (gtk_icon_theme_has_icon (icon_theme, stock_id))
{
GtkWidget* icon = gtk_image_new_from_stock (stock_id,
GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem),
icon);
}
}
}
else
menuitem = gtk_image_menu_item_new_from_stock (stock_id, NULL);
gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, position);
if (callback)
g_signal_connect (menuitem, "activate", callback, widget);
else
gtk_widget_set_sensitive (menuitem, FALSE);
return menuitem;
}
static void static void
webkit_web_view_populate_popup_cb (WebKitWebView* web_view, webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
GtkWidget* menu, GtkWidget* menu,
@ -1202,51 +1250,153 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
{ {
MidoriBrowser* browser = midori_browser_get_for_widget (GTK_WIDGET (view)); MidoriBrowser* browser = midori_browser_get_for_widget (GTK_WIDGET (view));
GtkActionGroup* actions = midori_browser_get_action_group (browser); GtkActionGroup* actions = midori_browser_get_action_group (browser);
GtkMenuShell* menu_shell = GTK_MENU_SHELL (menu);
GtkWidget* widget = GTK_WIDGET (view);
GtkWidget* menuitem; GtkWidget* menuitem;
GtkWidget* icon; GtkWidget* icon;
gchar* stock_id; gchar* stock_id;
GdkScreen* screen;
GtkIconTheme* icon_theme;
GList* items; GList* items;
gboolean has_selection; gboolean has_selection;
gboolean is_editable;
gboolean is_document;
GtkWidget* label; GtkWidget* label;
#if WEBKIT_CHECK_VERSION (1, 1, 15)
gint x, y;
GdkEventButton event;
WebKitHitTestResult* result;
WebKitHitTestResultContext context;
gboolean is_image;
gboolean is_media;
gint i;
gdk_window_get_pointer (GTK_WIDGET (web_view)->window, &x, &y, NULL);
event.x = x;
event.y = y;
result = webkit_web_view_get_hit_test_result (web_view, &event);
context = katze_object_get_int (result, "context");
has_selection = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION;
/* Ensure view->selected_text */
midori_view_has_selection (view);
is_editable = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE;
is_image = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE;
is_media = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA;
is_document = !view->link_uri && !has_selection && !is_image && !is_media;
g_object_unref (result);
#else
has_selection = midori_view_has_selection (view); has_selection = midori_view_has_selection (view);
is_document = !view->link_uri && !has_selection;
/* Unfortunately inspecting the menu is the only way to /* Unfortunately inspecting the menu is the only way to
determine that the mouse is over a text area or selection. */ determine that the mouse is over a text area or selection. */
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);
g_list_free (items);
if (GTK_IS_IMAGE_MENU_ITEM (menuitem)) if (GTK_IS_IMAGE_MENU_ITEM (menuitem))
{ {
icon = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (menuitem)); icon = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (menuitem));
gtk_image_get_stock (GTK_IMAGE (icon), &stock_id, NULL); gtk_image_get_stock (GTK_IMAGE (icon), &stock_id, NULL);
if (!strcmp (stock_id, GTK_STOCK_CUT)) if (!strcmp (stock_id, GTK_STOCK_FIND))
{
gtk_widget_hide (menuitem);
menuitem = (GtkWidget*)g_list_nth_data (items, 1);
gtk_widget_hide (menuitem);
menuitem = (GtkWidget*)g_list_nth_data (items, 2);
icon = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (menuitem));
gtk_image_get_stock (GTK_IMAGE (icon), &stock_id, NULL);
}
is_editable = !strcmp (stock_id, GTK_STOCK_CUT);
}
else
is_editable = FALSE;
g_list_free (items);
#endif
if (is_editable)
{ {
#if WEBKIT_CHECK_VERSION (1, 1, 14) #if WEBKIT_CHECK_VERSION (1, 1, 14)
if (!strcmp (stock_id, GTK_STOCK_UNDO))
return;
menuitem = gtk_separator_menu_item_new (); menuitem = gtk_separator_menu_item_new ();
gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menuitem); gtk_menu_shell_prepend (menu_shell, menuitem);
gtk_widget_show (menuitem); gtk_widget_show (menuitem);
menuitem = sokoke_action_create_popup_menu_item ( menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "Redo")); gtk_action_group_get_action (actions, "Redo"));
gtk_widget_set_sensitive (menuitem, gtk_widget_set_sensitive (menuitem,
webkit_web_view_can_redo (web_view)); webkit_web_view_can_redo (web_view));
gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menuitem); gtk_menu_shell_prepend (menu_shell, menuitem);
menuitem = sokoke_action_create_popup_menu_item ( menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "Undo")); gtk_action_group_get_action (actions, "Undo"));
gtk_widget_set_sensitive (menuitem, gtk_widget_set_sensitive (menuitem,
webkit_web_view_can_undo (web_view)); webkit_web_view_can_undo (web_view));
gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menuitem); gtk_menu_shell_prepend (menu_shell, menuitem);
#endif #endif
return; return;
} }
if (strcmp (stock_id, GTK_STOCK_FIND))
has_selection = FALSE; #if WEBKIT_CHECK_VERSION (1, 1, 15)
items = gtk_container_get_children (GTK_CONTAINER (menu));
i = 0;
while ((menuitem = g_list_nth_data (items, i++)))
gtk_widget_destroy (menuitem);
g_list_free (items);
if (view->link_uri)
{
midori_view_insert_menu_item (menu_shell, -1,
_("Open _Link"), NULL,
NULL /* G_CALLBACK (midori_web_view_menu_open_activate_cb) */, widget);
midori_view_insert_menu_item (menu_shell, -1,
_("Open Link in New _Tab"), STOCK_TAB_NEW,
G_CALLBACK (midori_web_view_menu_new_tab_activate_cb), widget);
midori_view_insert_menu_item (menu_shell, -1,
_("Open Link in New _Window"), STOCK_WINDOW_NEW,
NULL /* G_CALLBACK (midori_web_view_menu_new_window_activate_cb) */, widget);
midori_view_insert_menu_item (menu_shell, -1,
_("_Copy Link destination"), NULL,
NULL /* G_CALLBACK (midori_web_view_menu_copy_link_activate_cb) */, widget);
/* FIXME */
midori_view_insert_menu_item (menu_shell, -1,
FALSE ? _("_Save Link destination") : _("_Download Link destination"), NULL,
NULL /* G_CALLBACK (midori_web_view_menu_save_activate_cb) */, widget);
if (view->download_manager && *view->download_manager)
midori_view_insert_menu_item (menu_shell, -1,
_("Download with Download _Manager"), STOCK_TRANSFER,
G_CALLBACK (midori_web_view_menu_download_activate_cb), widget);
midori_view_insert_menu_item (menu_shell, -1,
NULL, STOCK_BOOKMARK_ADD,
G_CALLBACK (midori_web_view_menu_add_bookmark_activate_cb), widget);
} }
if (is_image)
{
if (view->link_uri)
gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ());
midori_view_insert_menu_item (menu_shell, -1,
_("Open _Image in New Tab"), STOCK_TAB_NEW,
NULL /* G_CALLBACK (midori_web_view_menu_image_new_tab_activate_cb) */, widget);
midori_view_insert_menu_item (menu_shell, -1,
_("Open _Image in New Window"), STOCK_WINDOW_NEW,
NULL /* G_CALLBACK (midori_web_view_menu_image_new_window_activate_cb) */, widget);
midori_view_insert_menu_item (menu_shell, -1,
_("Copy Image _Address"), NULL,
NULL /* G_CALLBACK (midori_web_view_menu_image_new_window_activate_cb) */, widget);
/* FIXME */
midori_view_insert_menu_item (menu_shell, -1,
FALSE ? _("Save I_mage") : _("Download I_mage"), GTK_STOCK_SAVE,
NULL /* G_CALLBACK (midori_web_view_menu_image_save_activate_cb) */, widget);
}
if (is_media)
{
midori_view_insert_menu_item (menu_shell, -1,
_("Copy Video _Address"), NULL,
NULL /* G_CALLBACK (midori_web_view_menu_video_copy_activate_cb) */, widget);
midori_view_insert_menu_item (menu_shell, -1,
FALSE ? _("Save _Video") : _("Download _Video"), GTK_STOCK_SAVE,
NULL /* G_CALLBACK (midori_web_view_menu_video_save_activate_cb) */, widget);
if (view->download_manager && *view->download_manager)
midori_view_insert_menu_item (menu_shell, -1,
_("Download with Download _Manager"), STOCK_TRANSFER,
NULL /* G_CALLBACK (midori_web_view_menu_video_download_activate_cb) */, widget);
}
#else
if (view->link_uri) if (view->link_uri)
{ {
items = gtk_container_get_children (GTK_CONTAINER (menu)); items = gtk_container_get_children (GTK_CONTAINER (menu));
@ -1254,19 +1404,9 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
/* hack to localize menu item */ /* hack to localize menu item */
label = gtk_bin_get_child (GTK_BIN (menuitem)); label = gtk_bin_get_child (GTK_BIN (menuitem));
gtk_label_set_label (GTK_LABEL (label), _("Open _Link")); gtk_label_set_label (GTK_LABEL (label), _("Open _Link"));
menuitem = gtk_image_menu_item_new_with_mnemonic ( midori_view_insert_menu_item (menu_shell, 1,
_("Open Link in New _Tab")); _("Open Link in New _Tab"), STOCK_TAB_NEW,
screen = gtk_widget_get_screen (GTK_WIDGET (view)); G_CALLBACK (midori_web_view_menu_new_tab_activate_cb), widget);
icon_theme = gtk_icon_theme_get_for_screen (screen);
if (gtk_icon_theme_has_icon (icon_theme, STOCK_TAB_NEW))
{
icon = gtk_image_new_from_stock (STOCK_TAB_NEW, GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), icon);
}
gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, 1);
g_signal_connect (menuitem, "activate",
G_CALLBACK (midori_web_view_menu_new_tab_activate_cb), view);
gtk_widget_show (menuitem);
g_list_free (items); g_list_free (items);
items = gtk_container_get_children (GTK_CONTAINER (menu)); items = gtk_container_get_children (GTK_CONTAINER (menu));
menuitem = (GtkWidget*)g_list_nth_data (items, 2); menuitem = (GtkWidget*)g_list_nth_data (items, 2);
@ -1280,15 +1420,13 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
label = gtk_bin_get_child (GTK_BIN (menuitem)); label = gtk_bin_get_child (GTK_BIN (menuitem));
gtk_label_set_label (GTK_LABEL (label), _("_Download Link destination")); gtk_label_set_label (GTK_LABEL (label), _("_Download Link destination"));
#else #else
/* hack to disable non-functional Download File /* hack to disable non-functional Download File */
FIXME: Make sure this really is the right menu item */
gtk_widget_hide (menuitem); gtk_widget_hide (menuitem);
menuitem = gtk_image_menu_item_new_with_mnemonic ( menuitem = gtk_image_menu_item_new_with_mnemonic (
_("_Save Link destination")); _("_Save Link destination"));
gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, 3); gtk_menu_shell_insert (menu_shell, menuitem, 3);
g_signal_connect (menuitem, "activate", g_signal_connect (menuitem, "activate",
G_CALLBACK (midori_web_view_menu_save_as_activate_cb), view); G_CALLBACK (midori_web_view_menu_save_as_activate_cb), view);
gtk_widget_show (menuitem);
#endif #endif
if (view->download_manager && *view->download_manager) if (view->download_manager && *view->download_manager)
{ {
@ -1297,17 +1435,16 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
icon = gtk_image_new_from_stock (GTK_STOCK_SAVE_AS, icon = gtk_image_new_from_stock (GTK_STOCK_SAVE_AS,
GTK_ICON_SIZE_MENU); GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), icon); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), icon);
gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, 4); gtk_menu_shell_insert (menu_shell, menuitem, 4);
g_signal_connect (menuitem, "activate", g_signal_connect (menuitem, "activate",
G_CALLBACK (midori_web_view_menu_download_activate_cb), view); G_CALLBACK (midori_web_view_menu_download_activate_cb), view);
gtk_widget_show (menuitem);
} }
menuitem = gtk_image_menu_item_new_from_stock (STOCK_BOOKMARK_ADD, NULL); menuitem = gtk_image_menu_item_new_from_stock (STOCK_BOOKMARK_ADD, NULL);
gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, 5); gtk_menu_shell_insert (menu_shell, menuitem, 5);
g_signal_connect (menuitem, "activate", g_signal_connect (menuitem, "activate",
G_CALLBACK (midori_web_view_menu_add_bookmark_activate_cb), view); G_CALLBACK (midori_web_view_menu_add_bookmark_activate_cb), view);
gtk_widget_show (menuitem);
} }
#endif
if (!view->link_uri && has_selection) if (!view->link_uri && has_selection)
{ {
@ -1324,8 +1461,7 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
menuitem = gtk_image_menu_item_new_with_mnemonic (_("Search _with")); menuitem = gtk_image_menu_item_new_with_mnemonic (_("Search _with"));
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), sub_menu); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), sub_menu);
gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, 1); gtk_menu_shell_insert (menu_shell, menuitem, 1);
gtk_widget_show (menuitem);
search_engines = katze_object_get_object (window, "search-engines"); search_engines = katze_object_get_object (window, "search-engines");
while ((item = katze_array_get_nth_item (search_engines, i++))) while ((item = katze_array_get_nth_item (search_engines, i++)))
@ -1346,10 +1482,14 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
(gchar*)katze_item_get_uri (item)); (gchar*)katze_item_get_uri (item));
g_signal_connect (menuitem, "activate", g_signal_connect (menuitem, "activate",
G_CALLBACK (midori_web_view_menu_search_web_activate_cb), view); G_CALLBACK (midori_web_view_menu_search_web_activate_cb), view);
gtk_widget_show (menuitem);
} }
g_object_unref (search_engines); g_object_unref (search_engines);
} }
#if WEBKIT_CHECK_VERSION (1, 1, 15)
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);
#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);
/* hack to localize menu item */ /* hack to localize menu item */
@ -1359,26 +1499,35 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
g_signal_connect (menuitem, "activate", g_signal_connect (menuitem, "activate",
G_CALLBACK (midori_web_view_menu_search_web_activate_cb), view); G_CALLBACK (midori_web_view_menu_search_web_activate_cb), view);
g_list_free (items); g_list_free (items);
#endif
if (strchr (view->selected_text, '.') if (view->selected_text && strchr (view->selected_text, '.')
&& !strchr (view->selected_text, ' ')) && !strchr (view->selected_text, ' '))
{ {
menuitem = gtk_image_menu_item_new_with_mnemonic ( menuitem = midori_view_insert_menu_item (menu_shell, -1,
_("Open Address in New _Tab")); _("Open Address in New _Tab"), GTK_STOCK_JUMP_TO,
icon = gtk_image_new_from_stock (GTK_STOCK_JUMP_TO, G_CALLBACK (midori_web_view_menu_new_tab_activate_cb), widget);
GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), icon);
gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, -1);
g_object_set_data (G_OBJECT (menuitem), "uri", view->selected_text); g_object_set_data (G_OBJECT (menuitem), "uri", view->selected_text);
g_signal_connect (menuitem, "activate",
G_CALLBACK (midori_web_view_menu_new_tab_activate_cb), view);
gtk_widget_show (menuitem);
} }
/* FIXME: view selection source */ /* FIXME: view selection source */
} }
if (!view->link_uri && !has_selection) if (is_document)
{ {
#if 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);
menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "Forward"));
gtk_menu_shell_append (menu_shell, menuitem);
menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "Stop"));
gtk_menu_shell_append (menu_shell, menuitem);
menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "Reload"));
gtk_menu_shell_append (menu_shell, menuitem);
#else
items = gtk_container_get_children (GTK_CONTAINER (menu)); items = gtk_container_get_children (GTK_CONTAINER (menu));
menuitem = (GtkWidget*)g_list_nth_data (items, 3); menuitem = (GtkWidget*)g_list_nth_data (items, 3);
/* hack to localize menu item */ /* hack to localize menu item */
@ -1392,24 +1541,25 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
} }
} }
g_list_free (items); g_list_free (items);
#endif
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 (GTK_MENU_SHELL (menu), menuitem); gtk_menu_shell_append (menu_shell, menuitem);
menuitem = gtk_separator_menu_item_new (); menuitem = gtk_separator_menu_item_new ();
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_menu_shell_append (menu_shell, menuitem);
gtk_widget_show (menuitem);
menuitem = sokoke_action_create_popup_menu_item ( menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "ZoomIn")); gtk_action_group_get_action (actions, "ZoomIn"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_menu_shell_append (menu_shell, menuitem);
menuitem = sokoke_action_create_popup_menu_item ( menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "ZoomOut")); gtk_action_group_get_action (actions, "ZoomOut"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_menu_shell_append (menu_shell, menuitem);
menuitem = sokoke_action_create_popup_menu_item ( menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "Encoding")); gtk_action_group_get_action (actions, "Encoding"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_menu_shell_append (menu_shell, menuitem);
if (GTK_WIDGET_IS_SENSITIVE (menuitem)) if (GTK_WIDGET_IS_SENSITIVE (menuitem))
{ {
GtkWidget* sub_menu; GtkWidget* sub_menu;
@ -1436,31 +1586,32 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
} }
menuitem = gtk_separator_menu_item_new (); menuitem = gtk_separator_menu_item_new ();
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_menu_shell_append (menu_shell, menuitem);
gtk_widget_show (menuitem);
menuitem = sokoke_action_create_popup_menu_item ( menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "BookmarkAdd")); gtk_action_group_get_action (actions, "BookmarkAdd"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_menu_shell_append (menu_shell, menuitem);
if (view->speed_dial_in_new_tabs && !midori_view_is_blank (view)) if (view->speed_dial_in_new_tabs && !midori_view_is_blank (view))
{ {
menuitem = sokoke_action_create_popup_menu_item ( menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "AddSpeedDial")); gtk_action_group_get_action (actions, "AddSpeedDial"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_menu_shell_append (menu_shell, menuitem);
} }
menuitem = sokoke_action_create_popup_menu_item ( menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "SaveAs")); gtk_action_group_get_action (actions, "SaveAs"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_menu_shell_append (menu_shell, menuitem);
/* Currently views that don't support source, don't support /* Currently views that don't support source, don't support
saving either. If that changes, we need to think of something. */ saving either. If that changes, we need to think of something. */
if (!midori_view_can_view_source (view)) if (!midori_view_can_view_source (view))
gtk_widget_set_sensitive (menuitem, FALSE); gtk_widget_set_sensitive (menuitem, FALSE);
menuitem = sokoke_action_create_popup_menu_item ( menuitem = sokoke_action_create_popup_menu_item (
gtk_action_group_get_action (actions, "SourceView")); gtk_action_group_get_action (actions, "SourceView"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_menu_shell_append (menu_shell, menuitem);
} }
gtk_widget_show_all (menu);
} }
static gboolean static gboolean