From 6f07ef6f3261ce362b68940489d5e18775034f87 Mon Sep 17 00:00:00 2001 From: Ilya Date: Sat, 28 Nov 2009 11:20:01 -0800 Subject: Password text inputs should send us into insert mode too. --- vimiumFrontend.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/vimiumFrontend.js b/vimiumFrontend.js index 1e1aa845..735267e7 100644 --- a/vimiumFrontend.js +++ b/vimiumFrontend.js @@ -187,7 +187,8 @@ function onBlurCapturePhase(event) { } function isInputOrText(target) { - return ((target.tagName == "INPUT" && target.type == "text") || target.tagName == "TEXTAREA"); + return ((target.tagName == "INPUT" && (target.type == "text" || target.type == "password")) || + target.tagName == "TEXTAREA"); } function enterInsertMode() { @@ -241,4 +242,4 @@ var isIframe = (window.self != window.parent); if (!isIframe) { initializePreDomReady(); window.addEventListener("DOMContentLoaded", initializeOnDomReady); -} \ No newline at end of file +} -- cgit v1.2.3 From f0ce5c20ea18f138fde0962cedd378fce939d0a6 Mon Sep 17 00:00:00 2001 From: Phil Crosby Date: Sat, 28 Nov 2009 18:24:40 -0800 Subject: When shwoing hints, handle links which have nested elements, like (google search results) and --- linkHints.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/linkHints.js b/linkHints.js index 82ffb1fd..3f261d36 100644 --- a/linkHints.js +++ b/linkHints.js @@ -76,7 +76,7 @@ function getVisibleClickableElements() { // Using getElementFromPoint will omit elements which have visibility=hidden or display=none, and // elements inside of containers that are also hidden. - if (element != getElementFromPoint(boundingRect.left, boundingRect.top)) + if (!elementOccupiesPoint(element, boundingRect.left, boundingRect.top)) continue; visibleElements.push(element); @@ -84,6 +84,20 @@ function getVisibleClickableElements() { return visibleElements; } +/* + * Checks whether the clickable element or one of its descendents is at the given point. We must check + * descendents because some clickable elements like "" can have many nested children. + */ +function elementOccupiesPoint(clickableElement, x, y) { + var elementAtPoint = getElementFromPoint(x, y); + // Recurse up to 5 parents. + for (var i = 0; i < 5 && elementAtPoint; i++) { + if (elementAtPoint == clickableElement) + return true; + elementAtPoint = elementAtPoint.parentNode; + } + return false; +} /* * Returns the element at the given point and factors in the page's CSS zoom level, which Webkit neglects * to do. This should become unnecessary when webkit fixes their bug. -- cgit v1.2.3 From b04b0320cbeca73d5fac88b1c84f3c666cd2e6c4 Mon Sep 17 00:00:00 2001 From: Phil Crosby Date: Sun, 29 Nov 2009 01:11:14 -0800 Subject: Avoid using getSelected in getSetting and getZoomLevel, because the tab may be executing in the background. This will be the case if you open a new tab via middle-clicking on a link. --- background_page.html | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/background_page.html b/background_page.html index 64bd582b..81e4c4a6 100644 --- a/background_page.html +++ b/background_page.html @@ -59,26 +59,22 @@ /* * Returns the previously saved zoom level for the current tab, or the default zoom level */ - function getZoomLevel(args) { - chrome.tabs.getSelected(null, function(tab) { - var returnPort = chrome.tabs.connect(tab.id, { name: "returnZoomLevel" }); - var localStorageKey = "zoom" + args.domain; - var zoomLevelForDomain = (localStorage[localStorageKey] || "").split(",")[1]; - var zoomLevel = parseInt(zoomLevelForDomain || localStorage["defaultZoomLevel"] || 100); - returnPort.postMessage({ zoomLevel: zoomLevel }); - }); + function getZoomLevel(args, port) { + var returnPort = chrome.tabs.connect(port.tab.id, { name: "returnZoomLevel" }); + var localStorageKey = "zoom" + args.domain; + var zoomLevelForDomain = (localStorage[localStorageKey] || "").split(",")[1]; + var zoomLevel = parseInt(zoomLevelForDomain || localStorage["defaultZoomLevel"] || 100); + returnPort.postMessage({ zoomLevel: zoomLevel }); } /* * Used by the content scripts to get settings from the local storage. */ - function getSetting(args) { + function getSetting(args, port) { var value = localStorage[args.key] ? localStorage[args.key] : defaultSettings[args.key]; - chrome.tabs.getSelected(null, function(tab) { - var returnPort = chrome.tabs.connect(tab.id, { name: "returnSetting" }); - returnPort.postMessage({ key: args.key, value: value }); - }); + var returnPort = chrome.tabs.connect(port.tab.id, { name: "returnSetting" }); + returnPort.postMessage({ key: args.key, value: value }); } /* -- cgit v1.2.3