[Xfce4-commits] <midori:master> Always links by number with Return and remove styles

Christian Dywan noreply at xfce.org
Sat Mar 5 00:24:02 CET 2011


Updating branch refs/heads/master
         to 353924a1170eac2ccffb3c90f2cf85e2c6a64776 (commit)
       from 3e47ac9e3fea83ac68977d820fb4425065c19a8a (commit)

commit 353924a1170eac2ccffb3c90f2cf85e2c6a64776
Author: Alexander Friesen <a_06357 at fastmail.fm>
Date:   Sat Mar 5 00:12:44 2011 +0100

    Always links by number with Return and remove styles
    
    Return is always required to confirm the typed number, which
    is consistent and more usable with Control for new tab.
    
    Hiding links now actually removes the extra spans.
    
    Opening links in a new tab keeps the links visible.
    
    Escape resets the typed digits.

 midori/midori-view.c |   42 ++++++++++++++++++++++++++++--------------
 1 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/midori/midori-view.c b/midori/midori-view.c
index fc1948b..d0cb178 100644
--- a/midori/midori-view.c
+++ b/midori/midori-view.c
@@ -1866,28 +1866,29 @@ gtk_widget_key_press_event_cb (WebKitWebView* web_view,
                 NULL);
             view->find_links = 0;
         }
-        else if (digit != -1 || event->keyval == GDK_Return)
+        else if (digit != -1 && event->keyval != GDK_Return && event->keyval != GDK_Escape)
+        {
+            if (view->find_links > -1)
+                view->find_links *= 10;
+            view->find_links += digit;
+        }
+        else if (event->keyval == GDK_Escape)
+        {
+            view->find_links = 0;
+        }
+        else if (event->keyval == GDK_Return)
         {
             gchar* script;
-            if (event->keyval != GDK_Return)
-            {
-                if (view->find_links > -1)
-                    view->find_links *= 10;
-                view->find_links += digit;
-            }
             script = g_strdup_printf (
                 "var links = document.getElementsByClassName ('midoriHKD87346');"
                 "var i = %d; var return_key = %d;"
-                "if (return_key || typeof links[i * 10] == 'undefined') {"
-                "    for (var j = 0; j < links.length; j++)"
-                "        links[j].style.display = 'none !important';"
+                "if (return_key) {"
                 "    if (typeof links[i] != 'undefined')"
                 "        links[i].parentNode.href; }",
                 view->find_links, event->keyval == GDK_Return);
             result = sokoke_js_script_eval (js_context, script, NULL);
             if (result && strstr (result, "://"))
             {
-                view->find_links = -1;
                 if (MIDORI_MOD_NEW_TAB (event->state))
                 {
                     gboolean background = view->open_tabs_in_the_background;
@@ -1896,20 +1897,33 @@ gtk_widget_key_press_event_cb (WebKitWebView* web_view,
                     g_signal_emit (view, signals[NEW_TAB], 0, result, background);
                 }
                 else
+                {
+                    gchar* dummy = sokoke_js_script_eval (js_context,
+                        "var links = document.getElementsByClassName ('midoriHKD87346');"
+                        "for (var i = links.length - 1; i >= 0; i--) {"
+                        "   var parent = links[i].parentNode;"
+                        "   parent.removeChild(links[i]); }",
+                        NULL);
+                    g_free (dummy);
+                    view->find_links = -1;
                     midori_view_set_uri (view, result);
+                }
             }
             g_free (script);
+            g_free (result);
+            view->find_links = 0;
         }
         else
         {
             result = sokoke_js_script_eval (js_context,
                 "var links = document.getElementsByClassName ('midoriHKD87346');"
-                "for (var i = 0; i < links.length; i++)"
-                "  links[i].style.display = 'none !important';",
+                "for (var i = links.length - 1; i >= 0; i--) {"
+                "   var parent = links[i].parentNode;"
+                "   parent.removeChild(links[i]); }",
                 NULL);
+            g_free (result);
             view->find_links = -1;
         }
-        g_free (result);
         return FALSE;
     }
 



More information about the Xfce4-commits mailing list