]> git.donarmstrong.com Git - roundcube.git/blobdiff - program/js/tiny_mce/plugins/tabfocus/editor_plugin_src.js
Imported Upstream version 0.5.2+dfsg
[roundcube.git] / program / js / tiny_mce / plugins / tabfocus / editor_plugin_src.js
index c2be2f40a6b2a9aa4f3c34e80b3947349b52040b..f4545e16703546db8e08a1c1a03e94cb23eb8314 100644 (file)
                                var x, i, f, el, v;\r
 \r
                                function find(d) {\r
-                                       f = DOM.getParent(ed.id, 'form');\r
-                                       el = f.elements;\r
-\r
-                                       if (f) {\r
-                                               each(el, function(e, i) {\r
-                                                       if (e.id == ed.id) {\r
-                                                               x = i;\r
-                                                               return false;\r
-                                                       }\r
-                                               });\r
-\r
-                                               if (d > 0) {\r
-                                                       for (i = x + 1; i < el.length; i++) {\r
-                                                               if (el[i].type != 'hidden')\r
-                                                                       return el[i];\r
-                                                       }\r
-                                               } else {\r
-                                                       for (i = x - 1; i >= 0; i--) {\r
-                                                               if (el[i].type != 'hidden')\r
-                                                                       return el[i];\r
-                                                       }\r
+                                       el = DOM.select(':input:enabled,*[tabindex]');\r
+                                       function canSelect(e) {\r
+                                               return e.type != 'hidden' && \r
+                                               e.tabIndex != '-1' && \r
+                                                       !(el[i].style.display == "none") && \r
+                                                       !(el[i].style.visibility == "hidden");\r
+                                   }\r
+\r
+                                       each(el, function(e, i) {\r
+                                               if (e.id == ed.id) {\r
+                                                       x = i;\r
+                                                       return false;\r
+                                               }\r
+                                       });\r
+\r
+                                       if (d > 0) {\r
+                                               for (i = x + 1; i < el.length; i++) {\r
+                                                       if (canSelect(el[i]))\r
+                                                               return el[i];\r
+                                               }\r
+                                       } else {\r
+                                               for (i = x - 1; i >= 0; i--) {\r
+                                                       if (canSelect(el[i]))\r
+                                                               return el[i];\r
                                                }\r
                                        }\r
 \r
                                        }\r
 \r
                                        if (el) {\r
-                                               if (ed = tinymce.get(el.id || el.name))\r
+                                               if (el.id && (ed = tinymce.get(el.id || el.name)))\r
                                                        ed.focus();\r
                                                else\r
-                                                       window.setTimeout(function() {window.focus();el.focus();}, 10);\r
+                                                       window.setTimeout(function() {\r
+                                                               if (!tinymce.isWebKit)\r
+                                                                       window.focus();\r
+                                                               el.focus();\r
+                                                       }, 10);\r
 \r
                                                return Event.cancel(e);\r
                                        }\r
                        } else\r
                                ed.onKeyDown.add(tabHandler);\r
 \r
-                       ed.onInit.add(function() {\r
-                               each(DOM.select('a:first,a:last', ed.getContainer()), function(n) {\r
-                                       Event.add(n, 'focus', function() {ed.focus();});\r
-                               });\r
-                       });\r
                },\r
 \r
                getInfo : function() {\r