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

Fix some hint bugs.

This commit is contained in:
Kris Maglione
2009-09-03 19:54:14 -04:00
parent b8d972ca94
commit ab63b8c314
2 changed files with 26 additions and 21 deletions

View File

@@ -1529,6 +1529,8 @@ function Events() //{{{
return void killEvent(); return void killEvent();
} }
// All of these special cases for hint mode are driving
// me insane! -Kris
if (modes.extended & modes.HINTS) if (modes.extended & modes.HINTS)
{ {
// under HINT mode, certain keys are redirected to hints.onEvent // under HINT mode, certain keys are redirected to hints.onEvent
@@ -1538,6 +1540,7 @@ function Events() //{{{
|| (/^[0-9]$/.test(key) && !hints.escNumbers)) || (/^[0-9]$/.test(key) && !hints.escNumbers))
{ {
hints.onEvent(event); hints.onEvent(event);
input.buffer = null;
return void killEvent(); return void killEvent();
} }
@@ -1664,7 +1667,8 @@ function Events() //{{{
finally finally
{ {
let motionMap = (input.pendingMotionMap && input.pendingMotionMap.names[0]) || ""; let motionMap = (input.pendingMotionMap && input.pendingMotionMap.names[0]) || "";
statusline.updateInputBuffer(motionMap + input.buffer); if (input.buffer !== null)
statusline.updateInputBuffer(motionMap + input.buffer);
} }
}, },

View File

@@ -556,6 +556,23 @@ function Hints() //{{{
return true; return true;
} }
function checkUnique()
{
if (hintNumber > validHints.length)
return void liberator.beep();
// if we write a numeric part like 3, but we have 45 hints, only follow
// the hint after a timeout, as the user might have wanted to follow link 34
if (hintNumber > 0 && hintNumber * 10 <= validHints.length)
{
let timeout = options["hinttimeout"];
if (timeout > 0)
activeTimeout = setTimeout(function () { processHints(true); }, timeout);
}
else // we have a unique hint
processHints(true);
}
/** /**
* Handle user input. * Handle user input.
* *
@@ -942,15 +959,11 @@ function Hints() //{{{
{ {
liberator.beep(); liberator.beep();
modes.reset(); modes.reset();
return false;
} }
else if (validHints.length == 1) else if (validHints.length == 1)
{
processHints(false); processHints(false);
return false; else
} checkUnique();
else // still hints visible
return true;
}, },
/** /**
@@ -1054,22 +1067,10 @@ function Hints() //{{{
} }
showActiveHint(hintNumber, oldHintNumber || 1); showActiveHint(hintNumber, oldHintNumber || 1);
if (hintNumber == 0 || hintNumber > validHints.length) if (hintNumber == 0)
return void liberator.beep(); return void liberator.beep();
// if we write a numeric part like 3, but we have 45 hints, only follow checkUnique();
// the hint after a timeout, as the user might have wanted to follow link 34
if (hintNumber > 0 && hintNumber * 10 <= validHints.length)
{
let timeout = options["hinttimeout"];
if (timeout > 0)
activeTimeout = setTimeout(function () { processHints(true); }, timeout);
return false;
}
// we have a unique hint
processHints(true);
return;
} }
} }