1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-23 04:47:59 +01:00

lastInputField is now available after switching tabs, new v.buffer.loaded getter/setter

This commit is contained in:
Martin Stubenschrott
2007-12-17 20:45:28 +00:00
parent 14a367ff71
commit 39fbf33d8b
4 changed files with 35 additions and 3 deletions

2
NEWS
View File

@@ -9,6 +9,8 @@
removed the following hint options: 'hintchars' 'maxhints' removed the following hint options: 'hintchars' 'maxhints'
added the following hint options: 'hinttimeout' added the following hint options: 'hinttimeout'
* IMPORTANT: changed 'I' key to Ctrl-Q to also work in textboxes * IMPORTANT: changed 'I' key to Ctrl-Q to also work in textboxes
* @@ to repeat last macro
* new macro commands q[a-z0-9] and @[a-z0-9] to replay them (thanks Marco!)
* scroll commands like j/k/gg/etc. have a much better heuristic to find a scrollable frame * scroll commands like j/k/gg/etc. have a much better heuristic to find a scrollable frame
* imap, inoremap, iunmap and imapclear added * imap, inoremap, iunmap and imapclear added
* new g0 and g$ mappings to go to the first/last tab * new g0 and g$ mappings to go to the first/last tab

2
TODO
View File

@@ -24,6 +24,8 @@ FEATURES:
7 whereever possible: get rid of dialogs and ask console-like dialog questions or write error prompts directly on the webpage or with :echo() 7 whereever possible: get rid of dialogs and ask console-like dialog questions or write error prompts directly on the webpage or with :echo()
7 :set! should also set about:config options (with autocomplete) 7 :set! should also set about:config options (with autocomplete)
6 jump to the next heading with ]h, next image ]i, previous textbox [t and so on 6 jump to the next heading with ]h, next image ]i, previous textbox [t and so on
6 [d could go to the last domain in the history stack. so if i browse from
google to another page and click 10 links there, [d would take me back to the google page
6 :grep support (needs location list) 6 :grep support (needs location list)
6 use '' to jump between marks like vim 6 use '' to jump between marks like vim
6 pipe selected text/link/website to an external command 6 pipe selected text/link/website to an external command

View File

@@ -222,7 +222,31 @@ vimperator.Buffer = function () //{{{
return { return {
lastInputField: null, // used to keep track of the right field for "gi" // 0 if loading, 1 if loaded or 2 if load failed
get loaded()
{
if (typeof window.content.document.pageIsFullyLoaded != "undefined")
return window.content.document.pageIsFullyLoaded;
else
return 1; // in doubt return "loaded"
},
set loaded(value)
{
window.content.document.pageIsFullyLoaded = value;
},
// used to keep track of the right field for "gi"
get lastInputField()
{
if (window.content.document.lastInputField)
return window.content.document.lastInputField;
else
return null;
},
set lastInputField(value)
{
window.content.document.lastInputField = value;
},
get URL() get URL()
{ {

View File

@@ -862,7 +862,7 @@ vimperator.Events = function () //{{{
}, },
// XXX: function may later be needed to detect a canceled synchronous openURL() // XXX: function may later be needed to detect a canceled synchronous openURL()
onStateChange: function (webProgress, aRequest, flags, aStatus) onStateChange: function (webProgress, request, flags, status)
{ {
// STATE_IS_DOCUMENT | STATE_IS_WINDOW is important, because we also // STATE_IS_DOCUMENT | STATE_IS_WINDOW is important, because we also
// receive statechange events for loading images and other parts of the web page // receive statechange events for loading images and other parts of the web page
@@ -873,12 +873,16 @@ vimperator.Events = function () //{{{
// only thrown for the current tab, not when another tab changes // only thrown for the current tab, not when another tab changes
if (flags & Components.interfaces.nsIWebProgressListener.STATE_START) if (flags & Components.interfaces.nsIWebProgressListener.STATE_START)
{ {
vimperator.buffer.loaded = 0;
vimperator.statusline.updateProgress(0); vimperator.statusline.updateProgress(0);
setTimeout (function () { vimperator.modes.reset(false); }, setTimeout (function () { vimperator.modes.reset(false); },
vimperator.mode == vimperator.modes.HINTS ? 500 : 0); vimperator.mode == vimperator.modes.HINTS ? 500 : 0);
} }
else if (flags & Components.interfaces.nsIWebProgressListener.STATE_STOP) else if (flags & Components.interfaces.nsIWebProgressListener.STATE_STOP)
;// vimperator.statusline.updateUrl(); {
vimperator.buffer.loaded = (status == 0 ? 1 : 2);
vimperator.statusline.updateUrl();
}
} }
}, },
// for notifying the user about secure web pages // for notifying the user about secure web pages