Enable new context menu code with WebKitGTK+ 1.1.15 afterall
To avoid regressing we keep the hacked document menu for now and add a small improvement to fix image context menus with older WebKitGTK+ versions.
This commit is contained in:
parent
249b8e4669
commit
55a2ecf710
1 changed files with 26 additions and 17 deletions
|
@ -69,7 +69,7 @@ struct _MidoriView
|
||||||
MidoriLoadStatus load_status;
|
MidoriLoadStatus load_status;
|
||||||
gboolean minimized;
|
gboolean minimized;
|
||||||
gchar* statusbar_text;
|
gchar* statusbar_text;
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 16)
|
#if WEBKIT_CHECK_VERSION (1, 1, 15)
|
||||||
WebKitHitTestResult* hit_test;
|
WebKitHitTestResult* hit_test;
|
||||||
#endif
|
#endif
|
||||||
gchar* link_uri;
|
gchar* link_uri;
|
||||||
|
@ -1150,7 +1150,7 @@ gtk_widget_button_press_event_cb (WebKitWebView* web_view,
|
||||||
else if (view->middle_click_opens_selection)
|
else if (view->middle_click_opens_selection)
|
||||||
{
|
{
|
||||||
gboolean is_editable;
|
gboolean is_editable;
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 16)
|
#if WEBKIT_CHECK_VERSION (1, 1, 15)
|
||||||
WebKitHitTestResult* result;
|
WebKitHitTestResult* result;
|
||||||
WebKitHitTestResultContext context;
|
WebKitHitTestResultContext context;
|
||||||
|
|
||||||
|
@ -1267,7 +1267,7 @@ gtk_widget_scroll_event_cb (WebKitWebView* web_view,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 16)
|
#if WEBKIT_CHECK_VERSION (1, 1, 15)
|
||||||
static void
|
static void
|
||||||
midori_web_view_menu_open_activate_cb (GtkWidget* widget,
|
midori_web_view_menu_open_activate_cb (GtkWidget* widget,
|
||||||
MidoriView* view)
|
MidoriView* view)
|
||||||
|
@ -1502,20 +1502,22 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
|
||||||
GtkWidget* widget = GTK_WIDGET (view);
|
GtkWidget* widget = GTK_WIDGET (view);
|
||||||
GtkWidget* menuitem;
|
GtkWidget* menuitem;
|
||||||
GtkWidget* icon;
|
GtkWidget* icon;
|
||||||
|
#if !WEBKIT_CHECK_VERSION (1, 1, 15)
|
||||||
gchar* stock_id;
|
gchar* stock_id;
|
||||||
|
#endif
|
||||||
GList* items;
|
GList* items;
|
||||||
gboolean has_selection;
|
gboolean has_selection;
|
||||||
gboolean is_editable;
|
gboolean is_editable;
|
||||||
gboolean is_document;
|
gboolean is_document;
|
||||||
GtkWidget* label;
|
GtkWidget* label;
|
||||||
|
guint i;
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 16)
|
#if WEBKIT_CHECK_VERSION (1, 1, 15)
|
||||||
gint x, y;
|
gint x, y;
|
||||||
GdkEventButton event;
|
GdkEventButton event;
|
||||||
WebKitHitTestResultContext context;
|
WebKitHitTestResultContext context;
|
||||||
gboolean is_image;
|
gboolean is_image;
|
||||||
gboolean is_media;
|
gboolean is_media;
|
||||||
gint i;
|
|
||||||
|
|
||||||
gdk_window_get_pointer (GTK_WIDGET (web_view)->window, &x, &y, NULL);
|
gdk_window_get_pointer (GTK_WIDGET (web_view)->window, &x, &y, NULL);
|
||||||
event.x = x;
|
event.x = x;
|
||||||
|
@ -1553,6 +1555,8 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
|
||||||
gtk_image_get_stock (GTK_IMAGE (icon), &stock_id, NULL);
|
gtk_image_get_stock (GTK_IMAGE (icon), &stock_id, NULL);
|
||||||
}
|
}
|
||||||
is_editable = !strcmp (stock_id, GTK_STOCK_CUT);
|
is_editable = !strcmp (stock_id, GTK_STOCK_CUT);
|
||||||
|
if (is_document && !strcmp (stock_id, GTK_STOCK_OPEN))
|
||||||
|
is_document = FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
is_editable = FALSE;
|
is_editable = FALSE;
|
||||||
|
@ -1579,12 +1583,17 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 16)
|
#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 */
|
||||||
|
if (!is_document)
|
||||||
|
{
|
||||||
items = gtk_container_get_children (GTK_CONTAINER (menu));
|
items = gtk_container_get_children (GTK_CONTAINER (menu));
|
||||||
i = 0;
|
i = 0;
|
||||||
while ((menuitem = g_list_nth_data (items, i++)))
|
while ((menuitem = g_list_nth_data (items, i++)))
|
||||||
gtk_widget_destroy (menuitem);
|
gtk_widget_destroy (menuitem);
|
||||||
g_list_free (items);
|
g_list_free (items);
|
||||||
|
}
|
||||||
if (view->link_uri)
|
if (view->link_uri)
|
||||||
{
|
{
|
||||||
midori_view_insert_menu_item (menu_shell, -1,
|
midori_view_insert_menu_item (menu_shell, -1,
|
||||||
|
@ -1688,7 +1697,6 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
|
||||||
if (!view->link_uri && has_selection)
|
if (!view->link_uri && has_selection)
|
||||||
{
|
{
|
||||||
GtkWidget* window;
|
GtkWidget* window;
|
||||||
guint i;
|
|
||||||
|
|
||||||
window = gtk_widget_get_toplevel (GTK_WIDGET (web_view));
|
window = gtk_widget_get_toplevel (GTK_WIDGET (web_view));
|
||||||
i = 0;
|
i = 0;
|
||||||
|
@ -1724,7 +1732,7 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
|
||||||
}
|
}
|
||||||
g_object_unref (search_engines);
|
g_object_unref (search_engines);
|
||||||
}
|
}
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 16)
|
#if WEBKIT_CHECK_VERSION (1, 1, 15)
|
||||||
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);
|
||||||
|
@ -1753,7 +1761,9 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
|
||||||
|
|
||||||
if (is_document)
|
if (is_document)
|
||||||
{
|
{
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 16)
|
/* FIXME: We can't re-implement Open in Frame or Inspect page
|
||||||
|
#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);
|
||||||
|
@ -1787,7 +1797,7 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
|
||||||
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 ());
|
gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ());
|
||||||
|
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 16)
|
#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)
|
||||||
{
|
{
|
||||||
midori_view_insert_menu_item (menu_shell, -1,
|
midori_view_insert_menu_item (menu_shell, -1,
|
||||||
|
@ -1826,7 +1836,6 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
|
||||||
{ "EncodingWestern" },
|
{ "EncodingWestern" },
|
||||||
{ "EncodingCustom" },
|
{ "EncodingCustom" },
|
||||||
};
|
};
|
||||||
guint i;
|
|
||||||
|
|
||||||
sub_menu = gtk_menu_new ();
|
sub_menu = gtk_menu_new ();
|
||||||
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), sub_menu);
|
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), sub_menu);
|
||||||
|
@ -2136,7 +2145,7 @@ midori_view_init (MidoriView* view)
|
||||||
view->load_status = MIDORI_LOAD_FINISHED;
|
view->load_status = MIDORI_LOAD_FINISHED;
|
||||||
view->minimized = FALSE;
|
view->minimized = FALSE;
|
||||||
view->statusbar_text = NULL;
|
view->statusbar_text = NULL;
|
||||||
#if WEBKIT_CHECK_VERSION (1, 1, 16)
|
#if WEBKIT_CHECK_VERSION (1, 1, 15)
|
||||||
view->hit_test = NULL;
|
view->hit_test = NULL;
|
||||||
#endif
|
#endif
|
||||||
view->link_uri = NULL;
|
view->link_uri = NULL;
|
||||||
|
|
Loading…
Reference in a new issue