1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-02-23 22:35:45 +01:00

Fix completions for FF3.6

Also see: https://bugzilla.mozilla.org/show_bug.cgi?id=510589
This commit is contained in:
Martin Stubenschrott
2009-08-14 23:45:42 +02:00
parent e842bf8cc9
commit fb44ca22dc
5 changed files with 19 additions and 25 deletions

View File

@@ -32,7 +32,11 @@ function Services()
ifaces.forEach(function (iface) res.QueryInterface(iface)); ifaces.forEach(function (iface) res.QueryInterface(iface));
return res; return res;
} }
catch (e) {} catch (e)
{
// liberator.log() is not defined at this time, so just dump any error
dump("Service creation failed for '" + classes + "': " + e);
}
} }
const self = { const self = {
@@ -86,7 +90,7 @@ function Services()
}; };
self.add("appStartup", "@mozilla.org/toolkit/app-startup;1", Ci.nsIAppStartup); self.add("appStartup", "@mozilla.org/toolkit/app-startup;1", Ci.nsIAppStartup);
self.add("autoCompleteSearch", "@mozilla.org/browser/global-history;2", Ci.nsIAutoCompleteSearch); self.add("autoCompleteSearch", "@mozilla.org/autocomplete/search;1?name=history", Ci.nsIAutoCompleteSearch);
self.add("browserSearch", "@mozilla.org/browser/search-service;1", Ci.nsIBrowserSearchService); self.add("browserSearch", "@mozilla.org/browser/search-service;1", Ci.nsIBrowserSearchService);
self.add("cache", "@mozilla.org/network/cache-service;1", Ci.nsICacheService); self.add("cache", "@mozilla.org/network/cache-service;1", Ci.nsICacheService);
self.add("commandLineHandler", "@mozilla.org/commandlinehandler/general-startup;1?type=liberator", Ci.nsICommandLineHandler); self.add("commandLineHandler", "@mozilla.org/commandlinehandler/general-startup;1?type=liberator", Ci.nsICommandLineHandler);

View File

@@ -402,28 +402,11 @@ function CommandLine() //{{{
{ {
function done() !(idx >= n + context.items.length || idx == -2 && !context.items.length); function done() !(idx >= n + context.items.length || idx == -2 && !context.items.length);
while (context.incomplete && !done()) while (context.incomplete && !done())
// threadYield(true, true) would be better, but it does not return on my
// machine until all awesomebar completions were reported, making
// :open foo<tab> nearly unusable, if the first 2 foo-completions would
// be there fast, but it takes up to 20 sec to find more foo-completions
//
// The strange thing is, I tested the 2009-01-07 nightly at work in Windows
// and it seemed to work perfectly there. Will have to see if it's a
// hardware (dual core there, vs. P4 at home) issue or an OS issue.
//
// While I *really* prefer this solution over my hack
// when it works, we can't have a nearly-defect :open
// prompt when releasing vimp 2.0, even not just on certain
// computers, as :open is probably the most often used ex-command
// in vimperator
//
// liberator.threadYield(false, true); is just a temporary measure as
// it has other problems (hitting tab often in a row), until we find the
// source of the problem (which we hopefully do, as I really don't want to
// have to revert to my hack when better solutions exist)
liberator.threadYield(false, true); liberator.threadYield(false, true);
if (done()) if (done())
break; break;
n += context.items.length; n += context.items.length;
} }
} }

View File

@@ -2,6 +2,8 @@ Continuous donations:
* Daniel Bainton (web hosting) * Daniel Bainton (web hosting)
2009: 2009:
* Norio Sugimoto
* Catatonic Recording
* Wataru Inoue (first one donating via addons.mozilla.org) * Wataru Inoue (first one donating via addons.mozilla.org)
* Krishnakumar Subramanian * Krishnakumar Subramanian
* Natan Zohar * Natan Zohar

View File

@@ -324,6 +324,7 @@ const config = { //{{{
////////////////////// COMPLETIONS ///////////////////////////////////////////// ////////////////////// COMPLETIONS /////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////{{{ /////////////////////////////////////////////////////////////////////////////{{{
var searchRunning = false; // only until Firefox fixes https://bugzilla.mozilla.org/show_bug.cgi?id=510589
completion.location = function location(context) { completion.location = function location(context) {
if (!services.get("autoCompleteSearch")) if (!services.get("autoCompleteSearch"))
return; return;
@@ -334,7 +335,7 @@ const config = { //{{{
context.incomplete = true; context.incomplete = true;
context.hasItems = context.completions.length > 0; // XXX context.hasItems = context.completions.length > 0; // XXX
context.filterFunc = null; context.filterFunc = null;
context.cancel = function () services.get("autoCompleteSearch").stopSearch(); context.cancel = function () { if (searchRunning) { services.get("autoCompleteSearch").stopSearch(); searchRunning = false; } };
context.compare = CompletionContext.Sort.unsorted; context.compare = CompletionContext.Sort.unsorted;
let timer = new Timer(50, 100, function (result) { let timer = new Timer(50, 100, function (result) {
context.incomplete = result.searchResult >= result.RESULT_NOMATCH_ONGOING; context.incomplete = result.searchResult >= result.RESULT_NOMATCH_ONGOING;
@@ -343,13 +344,17 @@ const config = { //{{{
for (i in util.range(0, result.matchCount)) for (i in util.range(0, result.matchCount))
]; ];
}); });
services.get("autoCompleteSearch").stopSearch(); if (searchRunning)
services.get("autoCompleteSearch").stopSearch();
searchRunning = true;
services.get("autoCompleteSearch").startSearch(context.filter, "", context.result, { services.get("autoCompleteSearch").startSearch(context.filter, "", context.result, {
onSearchResult: function onSearchResult(search, result) { onSearchResult: function onSearchResult(search, result) {
context.result = result;
timer.tell(result); timer.tell(result);
if (result.searchResult <= result.RESULT_SUCCESS) if (result.searchResult <= result.RESULT_SUCCESS)
{
searchRunning = false;
timer.flush(); timer.flush();
}
} }
}); });
}; };

View File

@@ -19,7 +19,7 @@
<Description> <Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>3.0</em:minVersion> <em:minVersion>3.0</em:minVersion>
<em:maxVersion>3.6a1pre</em:maxVersion> <em:maxVersion>3.6a2pre</em:maxVersion>
</Description> </Description>
</em:targetApplication> </em:targetApplication>
</Description> </Description>