diff --git a/AUTHORS b/AUTHORS index 9dc10466..11188443 100644 --- a/AUTHORS +++ b/AUTHORS @@ -4,12 +4,12 @@ Main developer: Developers: * Viktor Kojouharov (Виктор Кожухаров) + * Doug Kearns Patches: * Muthu Kannan (ctrl-v support) * Lars Kindler (:buffer(s) functionality) * Lee Hinman (:open ./.. support) * Bart Trojanowski (Makefile) - * Doug Kearns (vimperator.vim, :tabonly etc. commands) - * Hannes Rist (:set title support) + * Hannes Rist (:set titlestring support) diff --git a/ChangeLog b/ChangeLog index 4214a7c9..e7491512 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@
 2007-05-02:
 	* version ???
+	* Flashing frame with ]f now works as expected
 	* many help fixes (most of them by Doug Kearns)
 	* new :reloadall command
 	* :hardcopy works now and shows the printing dialog
diff --git a/chrome/content/vimperator/commands.js b/chrome/content/vimperator/commands.js
index 00c28340..eece3e43 100644
--- a/chrome/content/vimperator/commands.js
+++ b/chrome/content/vimperator/commands.js
@@ -1428,7 +1428,6 @@ function isDirectory(url)
 // frame related functions //////////////////////////////////////// {{{1
 ////////////////////////////////////////////////////////////////////////
 
-// function stolen from Conkeror
 function focusNextFrame(count)
 {
     try
@@ -1454,21 +1453,20 @@ function focusNextFrame(count)
         // Focus the next one, 0 if we're at the last one
         if (next >= frames.length)
             next = 0;
-        frames[next].focus();
-        var oldbg = frames[next].document.bgColor;
-        var oldstyle = frames[next].document.body.getAttribute("style");
-        frames[next].document.bgColor = "red";
-        frames[next].document.body.setAttribute("style", "background-color: #FF0000;");
-    
-        setTimeout(function(doc, bgcolor, style) {
-            doc.bgColor = bgcolor;
-            if (oldstyle == null)
-                doc.body.removeAttribute("style");
-            else
-                doc.body.setAttribute("style", style);
-        }, 150, frames[next].document, oldbg, oldstyle);
 
-    } catch(e) {alert(e);}
+        frames[next].focus();
+
+        var doc = frames[next].document;
+        var indicator = doc.createElement("div");
+        indicator.id = "vimperator-frame-indicator";
+        // NOTE: need to set a high z-index - it's a crapshoot!
+        var style = "background-color: red; opacity: 0.5; z-index: 999;" +
+                    "position: fixed; top: 0; bottom: 0; left: 0; right: 0;";
+        indicator.setAttribute("style", style);
+        doc.body.appendChild(indicator);
+
+        setTimeout(function() { doc.body.removeChild(indicator); }, 250);
+    } catch(e) { alert(e); }
 }
 
 
diff --git a/chrome/content/vimperator/vimperator.js b/chrome/content/vimperator/vimperator.js
index e930bab5..bfce3b2e 100644
--- a/chrome/content/vimperator/vimperator.js
+++ b/chrome/content/vimperator/vimperator.js
@@ -1098,17 +1098,19 @@ function Vimperator()
     // alert('end');
 }
 
+// XXX: move where?
 // provides functions for working with tabs
 function Tabs()
 {
     ////////////////////////////////////////////////////////////////////////////////
     ////////////////////// PRIVATE SECTION /////////////////////////////////////////
     ////////////////////////////////////////////////////////////////////////////////
-    /* spec can either be an absolute integer
-     * or "" for the current tab
-     * or "+1" for the next tab
-     * or "-3" for the tab, which is 3 positions left of the current
-     * or "$" for the last tab
+    /** @param spec can either be:
+     * - an absolute integer
+     * - "" for the current tab
+     * - "+1" for the next tab
+     * - "-3" for the tab, which is 3 positions left of the current
+     * - "$" for the last tab
      */
     function indexFromSpec(spec, wrap)
     {
@@ -1145,23 +1147,23 @@ function Tabs()
         return position;
     }
 
-    function indexFromTab(tab)
-    {
-        var length = getBrowser().mTabs.length;
-        for (var i = 0; i < length; i++)
-        {
-            if (getBrowser().mTabs[i] == tab)
-                return i;
-        }
-        return false;
-    }
-
     ////////////////////////////////////////////////////////////////////////////////
     ////////////////////// PUBLIC SECTION //////////////////////////////////////////
     ////////////////////////////////////////////////////////////////////////////////
     // @returns the index of the currently selected tab starting with 0
-    this.index = function()
+    this.index = function(tab)
     {
+        if(tab)
+        {
+            var length = getBrowser().mTabs.length;
+            for (var i = 0; i < length; i++)
+            {
+                if (getBrowser().mTabs[i] == tab)
+                    return i;
+            }
+            return false;
+        }
+
         return getBrowser().tabContainer.selectedIndex;
     }
     this.count = function()
@@ -1170,7 +1172,7 @@ function Tabs()
     }
 
     // TODO: implement filter
-    // @returns an array of buffers which match filter
+    // @returns an array of tabs which match filter
     this.get = function(filter)
     {
         var buffers = [];
@@ -1185,7 +1187,7 @@ function Tabs()
         return buffers;
     }
 
-    /*  position == '' moves the tab to the last position as per Vim
+    /*  spec == "" moves the tab to the last position as per Vim
      *  wrap causes the movement to wrap around the start and end of the tab list
      *  NOTE: position is a 0 based index
      *  FIXME: tabmove! N should probably produce an error
@@ -1199,17 +1201,6 @@ function Tabs()
         getBrowser().moveTabTo(tab, index);
     }
 
-    this.select = function(spec, wrap)
-    {
-        var index = indexFromSpec(spec, wrap);
-        if (index === false)
-        {
-            beep(); // XXX: move to ex-handling?
-            return false;
-        }
-        getBrowser().mTabContainer.selectedIndex = index;
-    }
-
     /* quit_on_last_tab = 1: quit without saving session
      * quit_on_last_tab = 2: quit and save session
      */
@@ -1230,5 +1221,16 @@ function Tabs()
     {
         getBrowser().removeAllTabsBut(tab);
     }
+
+    this.select = function(spec, wrap)
+    {
+        var index = indexFromSpec(spec, wrap);
+        if (index === false)
+        {
+            beep(); // XXX: move to ex-handling?
+            return false;
+        }
+        getBrowser().mTabContainer.selectedIndex = index;
+    }
 }
 // vim: set fdm=marker sw=4 ts=4 et: