зеркало из https://github.com/mozilla/gecko-dev.git
Fix for bug 221361. right click context speed is very slow with large selections
r=jan,neil sr=alecf patch by gemal
This commit is contained in:
Родитель
732bccfc0d
Коммит
0300557bb8
|
@ -3236,7 +3236,7 @@ nsContextMenu.prototype = {
|
||||||
//selected text. Only use the first 15 chars.
|
//selected text. Only use the first 15 chars.
|
||||||
isTextSelection : function() {
|
isTextSelection : function() {
|
||||||
var result = false;
|
var result = false;
|
||||||
var selection = this.searchSelected();
|
var selection = this.searchSelected(16);
|
||||||
|
|
||||||
var searchSelectText;
|
var searchSelectText;
|
||||||
if (selection != "") {
|
if (selection != "") {
|
||||||
|
@ -3252,13 +3252,21 @@ nsContextMenu.prototype = {
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
|
|
||||||
searchSelected : function() {
|
searchSelected : function( charlen ) {
|
||||||
var focusedWindow = document.commandDispatcher.focusedWindow;
|
var focusedWindow = document.commandDispatcher.focusedWindow;
|
||||||
var searchStr = focusedWindow.__proto__.getSelection.call(focusedWindow);
|
var searchStr = focusedWindow.__proto__.getSelection.call(focusedWindow);
|
||||||
searchStr = searchStr.toString();
|
searchStr = searchStr.toString();
|
||||||
searchStr = searchStr.replace( /^\s+/, "" );
|
// searching for more than 150 chars makes no sense
|
||||||
searchStr = searchStr.replace(/(\n|\r|\t)+/g, " ");
|
if (!charlen)
|
||||||
searchStr = searchStr.replace(/\s+$/,"");
|
charlen = 150;
|
||||||
|
if (charlen < searchStr.length) {
|
||||||
|
// only use the first charlen important chars. see bug 221361
|
||||||
|
var pattern = new RegExp("^(?:\\s*.){0," + charlen + "}");
|
||||||
|
pattern.test(searchStr);
|
||||||
|
searchStr = RegExp.lastMatch;
|
||||||
|
}
|
||||||
|
searchStr = searchStr.replace(/\s*(.*?)\s*$/, "$1");
|
||||||
|
searchStr = searchStr.replace(/\s+/g, " ");
|
||||||
return searchStr;
|
return searchStr;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -784,7 +784,7 @@ nsContextMenu.prototype = {
|
||||||
//selected text. Only use the first 15 chars.
|
//selected text. Only use the first 15 chars.
|
||||||
isTextSelection : function() {
|
isTextSelection : function() {
|
||||||
var result = false;
|
var result = false;
|
||||||
var selection = this.searchSelected();
|
var selection = this.searchSelected(16);
|
||||||
|
|
||||||
var bundle = srGetStrBundle("chrome://communicator/locale/contentAreaCommands.properties");
|
var bundle = srGetStrBundle("chrome://communicator/locale/contentAreaCommands.properties");
|
||||||
|
|
||||||
|
@ -803,13 +803,21 @@ nsContextMenu.prototype = {
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
|
|
||||||
searchSelected : function() {
|
searchSelected : function( charlen ) {
|
||||||
var focusedWindow = document.commandDispatcher.focusedWindow;
|
var focusedWindow = document.commandDispatcher.focusedWindow;
|
||||||
var searchStr = focusedWindow.__proto__.getSelection.call(focusedWindow);
|
var searchStr = focusedWindow.__proto__.getSelection.call(focusedWindow);
|
||||||
searchStr = searchStr.toString();
|
searchStr = searchStr.toString();
|
||||||
searchStr = searchStr.replace( /^\s+/, "" );
|
// searching for more than 150 chars makes no sense
|
||||||
searchStr = searchStr.replace(/(\n|\r|\t)+/g, " ");
|
if (!charlen)
|
||||||
searchStr = searchStr.replace(/\s+$/,"");
|
charlen = 150;
|
||||||
|
if (charlen < searchStr.length) {
|
||||||
|
// only use the first charlen important chars. see bug 221361
|
||||||
|
var pattern = new RegExp("^(?:\\s*.){0," + charlen + "}");
|
||||||
|
pattern.test(searchStr);
|
||||||
|
searchStr = RegExp.lastMatch;
|
||||||
|
}
|
||||||
|
searchStr = searchStr.replace(/\s*(.*?)\s*$/, "$1");
|
||||||
|
searchStr = searchStr.replace(/\s+/g, " ");
|
||||||
return searchStr;
|
return searchStr;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче