aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/domUtils.js13
-rw-r--r--linkHints.js17
-rw-r--r--vimium.css7
3 files changed, 26 insertions, 11 deletions
diff --git a/lib/domUtils.js b/lib/domUtils.js
index ee17d45f..06bffa42 100644
--- a/lib/domUtils.js
+++ b/lib/domUtils.js
@@ -106,10 +106,15 @@ var domUtils = {
},
// momentarily flash a border around an element to give user some visual feedback
- flashElement: function(element) {
- var oldBorderValue = element.style.border;
- element.style.border = '1px solid #66f';
- setTimeout(function(){element.style.border = oldBorderValue;}, 400);
+ flashElement: function(element, rect) {
+ var flashEl = document.createElement("div");
+ flashEl.id = "vimiumFlash";
+ flashEl.style.left = rect.left + window.scrollX + "px";
+ flashEl.style.top = rect.top + window.scrollY + "px";
+ flashEl.style.width = rect.width + "px";
+ flashEl.style.height = rect.height + "px";
+ document.body.appendChild(flashEl);
+ setTimeout(function() { flashEl.parentNode.removeChild(flashEl); delete flashEl; }, 400);
},
};
diff --git a/linkHints.js b/linkHints.js
index c729b832..8f91264c 100644
--- a/linkHints.js
+++ b/linkHints.js
@@ -184,7 +184,7 @@ var linkHints = {
if (linksMatched.length == 0) {
this.deactivateMode();
} else if (linksMatched.length == 1) {
- this.activateLink(linksMatched[0].clickableItem, delay);
+ this.activateLink(linksMatched[0], delay);
} else {
for (var i in this.hintMarkers)
this.hideMarker(this.hintMarkers[i]);
@@ -199,15 +199,16 @@ var linkHints = {
*/
activateLink: function(matchedLink, delay) {
this.delayMode = true;
- if (domUtils.isSelectable(matchedLink)) {
- domUtils.simulateSelect(matchedLink);
+ var clickEl = matchedLink.clickableItem;
+ if (domUtils.isSelectable(clickEl)) {
+ domUtils.simulateSelect(clickEl);
this.deactivateMode(delay, function() { linkHints.delayMode = false; });
} else {
// TODO figure out which other input elements should not receive focus
- if (matchedLink.nodeName.toLowerCase() === 'input' && matchedLink.type !== 'button')
- matchedLink.focus();
- domUtils.flashElement(matchedLink);
- this.linkActivator(matchedLink);
+ if (clickEl.nodeName.toLowerCase() === 'input' && clickEl.type !== 'button')
+ clickEl.focus();
+ domUtils.flashElement(clickEl, matchedLink.rect);
+ this.linkActivator(clickEl);
if (this.shouldOpenWithQueue) {
this.deactivateMode(delay, function() {
linkHints.delayMode = false;
@@ -544,6 +545,8 @@ var hintUtils = {
marker.style.left = clientRect.left + window.scrollX + "px";
marker.style.top = clientRect.top + window.scrollY + "px";
+ marker.rect = link.rect;
+
return marker;
}
};
diff --git a/vimium.css b/vimium.css
index 93be04c9..66d4264a 100644
--- a/vimium.css
+++ b/vimium.css
@@ -380,3 +380,10 @@ body.vimiumFindMode ::selection {
border: none !important;
width: 90% !important;
}
+
+#vimiumFlash {
+ box-shadow: 0px 0px 4px 2px #4183C4;
+ background: transparent;
+ position: absolute;
+ z-index: 99999;
+}