[Xfce4-commits] <midori:master> Enable new context menu code with WebKitGTK+ 1.1.15 afterall

Christian Dywan noreply at xfce.org
Sat Sep 26 22:20:04 CEST 2009


Updating branch refs/heads/master
         to 55a2ecf710c304d602d3952ba6855f20ee181497 (commit)
       from 249b8e466920624afb69651298ce49332596eea0 (commit)

commit 55a2ecf710c304d602d3952ba6855f20ee181497
Author: Christian Dywan <christian at twotoasts.de>
Date:   Sat Sep 26 21:36:41 2009 +0200

    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.

 midori/midori-view.c |   43 ++++++++++++++++++++++++++-----------------
 1 files changed, 26 insertions(+), 17 deletions(-)

diff --git a/midori/midori-view.c b/midori/midori-view.c
index 53b7720..3404dc4 100644
--- a/midori/midori-view.c
+++ b/midori/midori-view.c
@@ -69,7 +69,7 @@ struct _MidoriView
     MidoriLoadStatus load_status;
     gboolean minimized;
     gchar* statusbar_text;
-    #if WEBKIT_CHECK_VERSION (1, 1, 16)
+    #if WEBKIT_CHECK_VERSION (1, 1, 15)
     WebKitHitTestResult* hit_test;
     #endif
     gchar* link_uri;
@@ -1150,7 +1150,7 @@ gtk_widget_button_press_event_cb (WebKitWebView*  web_view,
         else if (view->middle_click_opens_selection)
         {
             gboolean is_editable;
-            #if WEBKIT_CHECK_VERSION (1, 1, 16)
+            #if WEBKIT_CHECK_VERSION (1, 1, 15)
             WebKitHitTestResult* result;
             WebKitHitTestResultContext context;
 
@@ -1267,7 +1267,7 @@ gtk_widget_scroll_event_cb (WebKitWebView*  web_view,
         return FALSE;
 }
 
-#if WEBKIT_CHECK_VERSION (1, 1, 16)
+#if WEBKIT_CHECK_VERSION (1, 1, 15)
 static void
 midori_web_view_menu_open_activate_cb (GtkWidget*  widget,
                                        MidoriView* view)
@@ -1502,20 +1502,22 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
     GtkWidget* widget = GTK_WIDGET (view);
     GtkWidget* menuitem;
     GtkWidget* icon;
+    #if !WEBKIT_CHECK_VERSION (1, 1, 15)
     gchar* stock_id;
+    #endif
     GList* items;
     gboolean has_selection;
     gboolean is_editable;
     gboolean is_document;
     GtkWidget* label;
+    guint i;
 
-    #if WEBKIT_CHECK_VERSION (1, 1, 16)
+    #if WEBKIT_CHECK_VERSION (1, 1, 15)
     gint x, y;
     GdkEventButton event;
     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;
@@ -1553,6 +1555,8 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
             gtk_image_get_stock (GTK_IMAGE (icon), &stock_id, NULL);
         }
         is_editable = !strcmp (stock_id, GTK_STOCK_CUT);
+        if (is_document && !strcmp (stock_id, GTK_STOCK_OPEN))
+            is_document = FALSE;
     }
     else
         is_editable = FALSE;
@@ -1579,12 +1583,17 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
         return;
     }
 
-    #if WEBKIT_CHECK_VERSION (1, 1, 16)
-    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 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));
+        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,
@@ -1688,7 +1697,6 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
     if (!view->link_uri && has_selection)
     {
         GtkWidget* window;
-        guint i;
 
         window = gtk_widget_get_toplevel (GTK_WIDGET (web_view));
         i = 0;
@@ -1724,7 +1732,7 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
             }
             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,
             _("_Search the Web"), GTK_STOCK_FIND,
             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 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 (
             gtk_action_group_get_action (actions, "Back"));
         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, 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)
         {
             midori_view_insert_menu_item (menu_shell, -1,
@@ -1826,7 +1836,6 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
               { "EncodingWestern" },
               { "EncodingCustom" },
             };
-            guint i;
 
             sub_menu = gtk_menu_new ();
             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->minimized = FALSE;
     view->statusbar_text = NULL;
-    #if WEBKIT_CHECK_VERSION (1, 1, 16)
+    #if WEBKIT_CHECK_VERSION (1, 1, 15)
     view->hit_test = NULL;
     #endif
     view->link_uri = NULL;



More information about the Xfce4-commits mailing list