1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-20 08:07:59 +01:00

Make sure that the hint number is in the viewport

This commit is contained in:
Kris Maglione
2008-12-19 14:57:34 -05:00
parent 74700d3aff
commit f60ea76379
3 changed files with 51 additions and 43 deletions

View File

@@ -1201,52 +1201,51 @@ function Events() //{{{
// global escape handler, is called in ALL modes // global escape handler, is called in ALL modes
onEscape: function () onEscape: function ()
{ {
if (!modes.passNextKey) if (modes.passNextKey)
return;
if (modes.passAllKeys)
{ {
if (modes.passAllKeys) modes.passAllKeys = false;
{ return;
modes.passAllKeys = false; }
return;
}
switch (liberator.mode) switch (liberator.mode)
{ {
case modes.NORMAL: case modes.NORMAL:
// clear any selection made // clear any selection made
let selection = window.content.getSelection(); let selection = window.content.getSelection();
try try
{ // a simple if (selection) does not seem to work { // a simple if (selection) does not seem to work
selection.collapseToStart(); selection.collapseToStart();
} }
catch (e) {} catch (e) {}
modes.reset();
break;
case modes.VISUAL:
if (modes.extended & modes.TEXTAREA)
liberator.mode = modes.TEXTAREA;
else if (modes.extended & modes.CARET)
liberator.mode = modes.CARET;
break;
case modes.CARET:
// setting this option will trigger an observer which will
// care about all other details like setting the NORMAL mode
options.setPref("accessibility.browsewithcaret", false);
break;
case modes.INSERT:
if ((modes.extended & modes.TEXTAREA) && !options["insertmode"])
liberator.mode = modes.TEXTAREA;
else
modes.reset(); modes.reset();
break; break;
case modes.VISUAL: default: // HINTS, CUSTOM or COMMAND_LINE
if (modes.extended & modes.TEXTAREA) modes.reset();
liberator.mode = modes.TEXTAREA; break;
else if (modes.extended & modes.CARET)
liberator.mode = modes.CARET;
break;
case modes.CARET:
// setting this option will trigger an observer which will
// care about all other details like setting the NORMAL mode
options.setPref("accessibility.browsewithcaret", false);
break;
case modes.INSERT:
if ((modes.extended & modes.TEXTAREA) && !options["insertmode"])
liberator.mode = modes.TEXTAREA;
else
modes.reset();
break;
default: // HINTS, CUSTOM or COMMAND_LINE
modes.reset();
break;
}
} }
}, },

View File

@@ -154,8 +154,8 @@ function Hints() //{{{
text = elem.textContent.toLowerCase(); text = elem.textContent.toLowerCase();
span = baseNodeAbsolute.cloneNode(true); span = baseNodeAbsolute.cloneNode(true);
span.style.left = (rect.left + scrollX) + "px"; span.style.left = Math.max((rect.left + scrollX), scrollX) + "px";
span.style.top = (rect.top + scrollY) + "px"; span.style.top = Math.max((rect.top + scrollY), scrollY) + "px";
fragment.appendChild(span); fragment.appendChild(span);
pageHints.push([elem, text, span, null, elem.style.backgroundColor, elem.style.color]); pageHints.push([elem, text, span, null, elem.style.backgroundColor, elem.style.color]);

View File

@@ -311,6 +311,15 @@ const util = { //{{{
identity: function identity(k) k, identity: function identity(k) k,
intersection: function (r1, r2) ({
get width() this.right - this.left,
get height() this.bottom - this.top,
left: Math.max(r1.left, r2.left),
right: Math.min(r1.right, r2.right),
top: Math.max(r1.top, r2.top),
bottom: Math.min(r1.bottom, r2.bottom)
}),
map: function map(obj, fn) map: function map(obj, fn)
{ {
let ary = []; let ary = [];