Полезная информация

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

№110-05-2012 11:51:22

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 13.0

Тормоза с прорисовкой жестов Firegestures

У кого стоит Firegestures прошу проверить и подтвердить (или опровергнуть)
На дефолтной начальной странице, вот этой
U6EKc.png

дикие тормоза с прорисовкой жестов  Firegestures

Отсутствует

 

№210-05-2012 12:06:36

brici
Участник
 
Группа: Members
Откуда: Chisinau
Зарегистрирован: 03-05-2009
Сообщений: 603
UA: Palemoon 12.0

Re: Тормоза с прорисовкой жестов Firegestures

- Было такое в купе с All-in-One Sidebar 0.7.15.. С версией 0.7.16 всё нормально.


Пизанская башня,- первое творение сюрреалистов.

Отсутствует

 

№310-05-2012 12:33:10

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 13.0

Re: Тормоза с прорисовкой жестов Firegestures

All-in-One Sidebar у меня не стоит. Стоят вот какие раширения

скрытый текст
Custom Buttons
        0.0.5.5
        true
        custombuttons@xsms.org
        FireGestures
        1.6.16
        true
        firegestures@xuldev.org

        Flashblock
        1.5.15.1
        true
        {3d7eb24f-2740-49df-8937-200b1cc08f8a}

        keyconfig
        20110522
        true
        keyconfig@dorando

        S3.Google Translator
        1.12
        true
        s3google@translator

     
        Trueblock Plus
        2.0.2
        true
        {e10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}

        IDM CC
        7.3.15
        false
        mozilla_cc@internetdownloadmanager.com


Неужели это из-за какого-то из них?

Отсутствует

 

№410-05-2012 12:46:28

brici
Участник
 
Группа: Members
Откуда: Chisinau
Зарегистрирован: 03-05-2009
Сообщений: 603
UA: Palemoon 12.0

Re: Тормоза с прорисовкой жестов Firegestures

- Предрасполагаю да. Вернись в старые версии что обновлял недавно.


Пизанская башня,- первое творение сюрреалистов.

Отсутствует

 

№510-05-2012 13:58:21

Пандёнок
Участник
 
Группа: Extensions
Зарегистрирован: 04-11-2008
Сообщений: 5543
UA: Firefox 13.0

Re: Тормоза с прорисовкой жестов Firegestures

brici пишет

Вернись в старые версии что обновлял недавно.

Ничего хуже не придумали?

Добавлено 10-05-2012 14:01:11
Ferguss114
Попробуйте удалить Trueblock Plus и поставить Adblock Plus (уже вышла версия 2.0.3).
Пробуйте отключать расширения по одному, чтобы выявить причину.

Отредактировано Пандёнок (10-05-2012 14:01:11)

Отсутствует

 

№610-05-2012 15:16:59

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 12.0

Re: Тормоза с прорисовкой жестов Firegestures

Отключил все расширения (кроме конечно Firegestures) - тормоза остались.
Поставил 12 версию, а там другая начальная страница
OoZ6R.png

На ней жесты не тормозят. Чудеса!

Бог с ним, я всё равно потом ставлю начальную страницу abot:blank, просто хотелось докопаться до причины.

Что интересно: я сравниваю 12 и 13 версии с 3.6 и выходит, что 3.6 с порядком засранным профилем работает быстрее, чем эти с чистым профилем (только дополнения, набор одинаковый).
Запускается 3.6 долго, но страницы открывает быстрее.


Кстати, спрошу, где отключается загрузка вкладок по требованию?

Отредактировано Ferguss114 (10-05-2012 15:28:59)

Отсутствует

 

№710-05-2012 16:43:40

winxpforever
Участник
 
Группа: Members
Зарегистрирован: 05-11-2011
Сообщений: 14
UA: Firefox 13.0

Re: Тормоза с прорисовкой жестов Firegestures

Ferguss114 пишет

Кстати, спрошу, где отключается загрузка вкладок по требованию?

Инструменты - Настройки - Основные; если при запуске Firefox выбрать "Показать окна и вкладки, открытые в прошлый раз", будет доступна опция "Не загружать вкладки без запроса". Ну или browser.sessionstore.restore_on_demand поставить в false.

Отсутствует

 

№810-05-2012 17:50:54

brici
Участник
 
Группа: Members
Откуда: Chisinau
Зарегистрирован: 03-05-2009
Сообщений: 603
UA: Palemoon 12.0

Re: Тормоза с прорисовкой жестов Firegestures

Пандёнок
-  И чем это Вам мой совет не понравился ? Основанный между прочим, на личном опыте.  Обновляешься, появляется проблема, возвращаешься. Что здесь ужасного ?
Лишь бы клавой щёлкать.


Пизанская башня,- первое творение сюрреалистов.

Отсутствует

 

№910-05-2012 18:31:03

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Тормоза с прорисовкой жестов Firegestures

У меня с FF15 на дефолтной начальной странице с жестами мыши проблем нет, но я не использую Firegestures. Жести мыши запускаю расширением Custom Buttons.

Отсутствует

 

№1010-05-2012 18:59:30

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 12.0

Re: Тормоза с прорисовкой жестов Firegestures

bunda1 пишет

...я не использую Firegestures. Жести мыши запускаю расширением Custom Buttons.

Как это?

Отсутствует

 

№1110-05-2012 22:12:38

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Тормоза с прорисовкой жестов Firegestures

Ferguss114
Кнопка которая работает как Firegestures.

скрытый текст

Выделить код

Код:

// Mouse Gestures................................ 
var ucjsMouseGestures={


// options
enableWheelGestures: true,
enableRockerGestures: true,
enablePopupGestures: true,


_lastX: 0,
_lastY: 0,
_directionChain: '',
_isMouseDownL: false,
_isMouseDownR: false,
_hideFireContext: false, //for windows
_shouldFireContext: false, //for linux

POPUP_ID: 'GesturePopup',
GESTURES:{
      'L':{name:'History Back',cmd:function(){document.getElementById("Browser:Back").doCommand();}},
      'R':{name:'History Forward',cmd:function(){document.getElementById("Browser:Forward").doCommand();}},
    //'LUL':{name:'Fast Backward',cmd:function(){if(gBrowser.sessionHistory.index>0)gBrowser.gotoIndex(0);}},
    //'RUR':{name:'Fast Forward',cmd:function(){var nav=gBrowser.webNavigation;nav.gotoIndex(nav.sessionHistory.count-1);}},
      'U':{name:'Reload',cmd:function(){document.getElementById("Browser:Reload").doCommand();}},
      'UD':{name:'Stop',cmd:function(){document.getElementById("Browser:Stop").doCommand();}},
    //'UDU':{name:'Reload Skip Cache',cmd:function(){document.getElementById("Browser:ReloadSkipCache").doCommand();}},
    //'RU':{name:'Home',cmd:function(){document.getElementById("Browser:Home").doCommand();}},
    //'ULU':{name:'Go Up Directory',cmd:function(){var uri=gBrowser.currentURI;if(uri.path=="/")return;var pathList=uri.path.split("/");if(!pathList.pop())pathList.pop();loadURI(uri.prePath+pathList.join("/")+"/");}},
      'LDL':{name:'Secure Login',cmd:function(){secureLogin.login();}},
      'RDR':{name:'Minimize Window',cmd:function(){window.minimize();}},
      'DRU':{name:'Maximize or Resore Window',cmd:function(){window.windowState==1?window.restore():window.maximize();}},
      'DU':{name:'Close Window',cmd:function(){window.close();}},
    //'URD':{name:'Full Screen',cmd:function(){document.getElementById("View:FullScreen").doCommand();}},
    //'DU':{name:'Undo Tab',cmd:function(){document.getElementById('History:UndoCloseTab').doCommand();}},
    //'LR':{name:'Open New Tab',cmd:function(){document.getElementById("cmd_newNavigatorTab").doCommand();document.getElementById("searchbar").focus();goDoCommand('cmd_selectAll');}},
      'D':{name:'Close Tab',cmd:function(){gBrowser.removeCurrentTab();}},
    //'RL':{name:'Duplicate Tab',cmd:function(){openNewTabWith(gBrowser.currentURI.spec,null,null,null,false);}},
    //'L<R':{name:'Previous Tab',cmd:function(){gBrowser.mTabContainer.advanceSelectedTab(-1,true);}},
        //'L>R':{name:'Next Tab',cmd:function(){gBrowser.mTabContainer.advanceSelectedTab(+1,true);}},
      'RU':{name:'Page Top',cmd:function(){goDoCommand('cmd_scrollTop');}},
      'RD':{name:'Page Bottom',cmd:function(){goDoCommand('cmd_scrollBottom');}},
    //'LDR':{name:'Show/Hide Upper Toolbars',cmd:function(){var menubar=document.getElementById("toolbar-menubar");var bmToolbar=document.getElementById("PersonalToolbar");menubar.collapsed=!menubar.collapsed;if(!bmToolbar.collapsed)bmToolbar.collapsed=true;}},
      'DLU':{name:'Toggle Addon Bar',cmd:function(){toggleAddonBar();}},
    //'URD':{name:'Show/Hide Bookmarks Sidebar',cmd:function(){toggleSidebar("viewBookmarksSidebar");}},
      'RUL':{name:'Page Info',cmd:function(){window.openDialog('chrome://browser/content/pageinfo/pageInfo.xul');;}},
          'RDL':{name:'Find',cmd:function(){if ("isFindBarVisible" in gFindBar) {
               gFindBar.isFindBarVisible() ? gFindBar.closeFindBar() : gFindBar.onFindCmd();}
               else {gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();};}},
      'ULD':{name:'Show/Hide BookmarksToolbar',cmd:function(){var toolbar = document.getElementById("PersonalToolbar");
          toolbar.collapsed = !toolbar.collapsed;
          document.persist(toolbar.id, "collapsed");;}},
    //'W-':{name:'[Popup] Histories',cmd:function(self,event){self._buildPopup(event,"HistoryPopup");}},     
      'RLRL':{name:'[Popup]Search Engines',cmd:function(self,event){self._buildPopup(event,"WebSearchPopup");}},
      'UR':{name:'[Popup] All Tabs',cmd:function(self,event){self._buildPopup(event,"AllTabsPopup");}},
    //'LR':{name:'[Popup] Closed Tabs',cmd:function(self,event){self._buildPopup(event,"ClosedTabsPopup");}},
      'W-':{name:'Zoom+',cmd:function(){document.getElementById("cmd_fullZoomEnlarge").doCommand();}},
      'W+':{name:'Zoom-',cmd:function(){document.getElementById("cmd_fullZoomReduce").doCommand();}},
          'UDU':{name:'Zoom Reset',cmd:function(){document.getElementById("cmd_fullZoomReset").doCommand();}},
      'DUD':{name:'Restart Firefox',cmd:function(){const nsIAppStartup=Components.interfaces.nsIAppStartup;var os=Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);var cancelQuit=Components.classes["@mozilla.org/supports-PRBool;1"].createInstance(Components.interfaces.nsISupportsPRBool);os.notifyObservers(cancelQuit,"quit-application-requested",null);if(cancelQuit.data)return;os.notifyObservers(null,"quit-application-granted",null);var wm=Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);var windows=wm.getEnumerator(null);while(windows.hasMoreElements()){var win=windows.getNext();if(("tryToClose"in win)&&!win.tryToClose())return;}Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(nsIAppStartup).quit(nsIAppStartup.eRestart|nsIAppStartup.eAttemptQuit);}},
      'DLUD':{name:'[AdBlock]Open blockable items',cmd:function(){document.getElementById("abp-command-sidebar").doCommand();;}},
      'RUD':{name:'[Noscript] Allow All This Page',cmd:function(){noscriptOverlay.allowPage(true);}},
      'RDU':{name:'[Noscript] Allow Page Temporarily',cmd:function(){noscriptOverlay.allowPage();}},
      'RDUD':{name:'[Noscript] Revoke Page Temporarily',cmd:function(){noscriptOverlay.revokeTemp();}},
      'RUDU':{name:'Clear Privacy Infomation/Delete flash cookies',cmd:function(){setTimeout(function(){ document.getElementById("Tools:Sanitize").doCommand();},0)
                 var dir = Components.classes["@mozilla.org/file/directory_service;1"]
                .getService(Components.interfaces.nsIProperties)
                .get("Home", Components.interfaces.nsIFile);
             dir.append("Application Data");
                 dir.append("Macromedia");
             dir.remove(true);;}},
      'LURD':{name:'To load the content of the current tab into the sidebar.',cmd:function(){if (document.getElementById('sidebar-title').getAttribute('value') == gBrowser.selectedTab.label) {
                toggleSidebar(); }
                else if (/\.xul$/.test(gBrowser.currentURI.spec)) {
                toggleSidebar('viewWebPanelsSidebar', true);
                document.getElementById('sidebar').setAttribute('src', gBrowser.currentURI.spec);
                document.getElementById('sidebar-title').setAttribute('value', gBrowser.selectedTab.label); }
                else{ openWebPanel(gBrowser.selectedTab.label, gBrowser.currentURI.spec);}}},
         'LDRU':{name:'Notepad',cmd:function(){ var link="data:text/html;base64,PFRFWFRBUkVBPjwvVEVYVEFSRUE+DQo8c3R5bGU+aHRtbCB7YmFja2dyb3VuZC1jb2xvcjpibGFjaztvdmVyZmxvdzpoaWRkZW47fXRleHRhcmVhIHtiYWNrZ3JvdW5kOiMzODM4Mzg7b3ZlcmZsb3cteTphdXRvO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7LW1vei1ib3JkZXItcmFkaXVzOjVweDtib3JkZXI6IDVweCBpbnNldCB3aGl0ZTtjb2xvcjogd2hpdGU7fTwvc3R5bGU+";
                 var label="Notepad";
                 gBrowser.selectedTab = gBrowser.addTab(link);}},         
         'LURDL':{name:'Open this page with Internet Explorer',cmd:function(){const IE_PATH = "C:\\Program Files\\Internet Explorer\\iexplore.exe";
            var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
                file.initWithPath(IE_PATH);
                if (!file.exists()) {
                alert("File does not exist: " + IE_PATH);
                return;}
                var process  = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
                try {
                var args = [window.content.location.href];
                process.init(file);
                process.run(false, args, args.length);}
                catch (ex) {
                alert("Failed to execute: " + IE_PATH);;}}},
      'LUR':{name:'Close Sidebar',cmd:function(){var sidebarBox = document.getElementById("sidebar-box");
                if (!sidebarBox.hidden)toggleSidebar(sidebarBox.getAttribute("sidebarcommand"));}},
        //'LUR':{name:'Bookmarks Manager',cmd:function(){PlacesCommandHook.showPlacesOrganizer('AllBookmarks');}},
        //'ULRLR':{name:'Save page',cmd:function(){document.getElementById("Browser:SavePage").doCommand();}},
        //'L>R':{name:'AntiBoss',cmd:function(){return;}},
          'L>R':{name:'AntiBoss',cmd:function(){setTimeout(function() { window.minimize();return; }, 300);stop(event);;}},
          'LUD':{name:'Bookmarks Manager in Tab',cmd:function(){const URL = "chrome://browser/content/places/places.xul";
                const IN_NEW_TAB = true;
                const IN_BACKGROUND = false;
                if (IN_NEW_TAB)
                gBrowser.loadOneTab(URL, null, null, null, IN_BACKGROUND, false);
                else
                gBrowser.loadURI(URL);}},
          'ULR':{name:'Add Tab in Bookmarks folder',cmd:function(){var bmsvc = Components. classes ["@mozilla.org/browser/nav-bookmarks-service;1"].
            getService (Components. interfaces. nsINavBookmarksService);
                var folderName = "add";
                var rootFolder = bmsvc. toolbarFolder;
                var f = getChildFolder (rootFolder, folderName);
                if (!f){
                bmsvc. createFolder (rootFolder, folderName, bmsvc. DEFAULT_INDEX);
                f = getChildFolder (rootFolder, folderName); }
                var br = gBrowser. getBrowserForTab (gBrowser. mCurrentTab);
                bmsvc. insertBookmark (f, br. webNavigation. currentURI, bmsvc. DEFAULT_INDEX, gBrowser. mCurrentTab. label);
                // var sebp = StarUI. showEditBookmarkPopup;
                //StarUI. showEditBookmarkPopup = function () {};
                //PlacesCommandHook. bookmarkCurrentPage (false, f);
                //StarUI. showEditBookmarkPopup = sebp;
                 function getChildFolder (parentId, title)
                {var res = null;
                try{
                var hs = Cc ["@mozilla.org/browser/nav-history-service;1"].
                getService (Ci. nsINavHistoryService);
                var options = hs. getNewQueryOptions ();
                options. excludeItems = true;
                var query = hs. getNewQuery ();
                query. setFolders ([parentId], 1);
                var result = hs. executeQuery (query, options);
                var rn = result. root;
                rn. containerOpen = true;
                var i, node;
                for (i = 0; i < rn. childCount; i++)
                {
                var node = rn. getChild (i);
                if (node. title == title){
                res = node. itemId;
                break;}}
                rn. containerOpen = false; } catch (e) {}
                return res;}
                var cbTitle = "Bookmarks folder [add]"; // Title of the sliding alert
            var cbDesc = "Add Tab in Bookmarks folder"; // Instructions/Info to describe the event
            custombuttons.alertSlide(cbTitle, cbDesc);;}},
          'ULRL':{name:'Delete Bookmarks',cmd:function(){var bmsvc = Components. classes ["@mozilla.org/browser/nav-bookmarks-service;1"].
                getService (Components. interfaces. nsINavBookmarksService);
                var folderName = "add";
                var bmsvc = Components. classes ["@mozilla.org/browser/nav-bookmarks-service;1"].
                getService (Components. interfaces. nsINavBookmarksService);
                var rootFolder = bmsvc. toolbarFolder;
                var bmsvc = Components. classes ["@mozilla.org/browser/nav-bookmarks-service;1"].
                getService (Components. interfaces. nsINavBookmarksService);
                var f = getChildFolder (rootFolder, folderName);
                if (f)
                bmsvc. removeFolderChildren (f)
                function getChildFolder (parentId, title){
                var res = null;
                try{
                var hs = Cc ["@mozilla.org/browser/nav-history-service;1"].
                getService (Ci. nsINavHistoryService);
                var options = hs. getNewQueryOptions ();
                options. excludeItems = true;
                var query = hs. getNewQuery ();
                query. setFolders ([parentId], 1);
                var result = hs. executeQuery (query, options);
                var rn = result. root;
                rn. containerOpen = true;
                var i, node;
                for (i = 0; i < rn. childCount; i++){
                var node = rn. getChild (i);
                if (node. title == title){
                res = node. itemId;
                break;}}
                rn. containerOpen = false;} catch (e) {}
                return res;}
                var cbTitle = "Bookmarks folder [add]"; // Title of the sliding alert
            var cbDesc = "Delete Bookmarks"; // Instructions/Info to describe the event
            custombuttons.alertSlide(cbTitle, cbDesc);;}},
          'URL':{name:'Add all Tabs in Bookmarks folder',cmd:function(){var bmsvc = Components. classes ["@mozilla.org/browser/nav-bookmarks-service;1"].
                getService (Components. interfaces. nsINavBookmarksService);
                var folderName = "click";
                var rootFolder = bmsvc. toolbarFolder;
                function getTabsURIs () {
                var tabList = [];
                var seenURIs = [];
                var br, webNav, uri;
                var tabs = getBrowser (). mTabs;
                for (var i = 0; i < tabs. length; ++i){
                br = gBrowser. getBrowserForTab (tabs [i]);
                var webNav = br. webNavigation;
                uri = webNav. currentURI;
                if (uri. spec in seenURIs)
                continue;
                seenURIs [uri. spec] = true;
                LOG ("uri: " + uri + ", label = " + tabs [i]. label);
                tabList. push ({ uri: uri, label: tabs [i]. label });}
                return tabList;}
                var f = getChildFolder (rootFolder, folderName);
                if (!f){
                bmsvc. createFolder (rootFolder, folderName, bmsvc. DEFAULT_INDEX);
                f = getChildFolder (rootFolder, folderName);}
                var uris = getTabsURIs ();
                var ios = Components. classes ["@mozilla.org/network/io-service;1"].
                getService (Components. interfaces. nsIIOService);
                var uri;
                bmsvc. runInBatchMode({
                runBatched: function (data){
                for (var i = 0; i < uris. length; i++)
                bmsvc. insertBookmark (f, uris [i]. uri, bmsvc. DEFAULT_INDEX, uris [i]. label);
                var cbTitle = "Bookmarks folder [click]"; // Title of the sliding alert
        var cbDesc = "Add all Tabs in Bookmarks folder"; // Instructions/Info to describe the event
        custombuttons.alertSlide(cbTitle, cbDesc);}},
                null);
                function getChildFolder (parentId, title){
                var res = null;
                try{
                var hs = Cc ["@mozilla.org/browser/nav-history-service;1"].
                getService (Ci. nsINavHistoryService);
                var options = hs. getNewQueryOptions ();
                options. excludeItems = true;
                var query = hs. getNewQuery ();
                query. setFolders ([parentId], 1);
                var result = hs. executeQuery (query, options);
                var rn = result. root;
                rn. containerOpen = true;
                var i, node;
                for (i = 0; i < rn. childCount; i++){
                var node = rn. getChild (i);
                if (node. title == title){
                res = node. itemId;
                break;}}
                rn. containerOpen = false;
                } catch (e) {}
                return res;};}},
           'URLR':{name:'Delete Bookmarks folder ',cmd:function(){var bmsvc = Components. classes ["@mozilla.org/browser/nav-bookmarks-service;1"].
                getService (Components. interfaces. nsINavBookmarksService);
                var folderName = "click";
                var rootFolder = bmsvc. toolbarFolder;
                var bmsvc = Components. classes ["@mozilla.org/browser/nav-bookmarks-service;1"].
                getService (Components. interfaces. nsINavBookmarksService);
                var f = getChildFolder (rootFolder, folderName);
                if (f)
                bmsvc. removeItem (f);
                function getChildFolder (parentId, title){
                var res = null;
                try{
                var hs = Cc ["@mozilla.org/browser/nav-history-service;1"].
                getService (Ci. nsINavHistoryService);
                var options = hs. getNewQueryOptions ();
                options. excludeItems = true;
                var query = hs. getNewQuery ();
                query. setFolders ([parentId], 1);
                var result = hs. executeQuery (query, options);
                var rn = result. root;
                rn. containerOpen = true;
                var i, node;
                for (i = 0; i < rn. childCount; i++){
                var node = rn. getChild (i);
                if (node. title == title){
                res = node. itemId;
                break;}}
                rn. containerOpen = false;} catch (e) {}
                return res;}
                var cbTitle = "Bookmarks folder [click]"; // Title of the sliding alert
            var cbDesc = "Delete Bookmarks folder"; // Instructions/Info to describe the event
            custombuttons.alertSlide(cbTitle, cbDesc);;}},
           'LDU':{name:'Open Add-on Manager',cmd:function(){BrowserOpenAddonsMgr();}},
           'LD':{name:'Extensions Tab',cmd:function(){const URL = "chrome://mozapps/content/extensions/extensions.xul";
                const IN_NEW_TAB = true;
                const IN_BACKGROUND = false;
            if (IN_NEW_TAB)
                gBrowser.loadOneTab(URL, null, null, null, IN_BACKGROUND, false);
                else
                gBrowser.loadURI(URL);}},
           'LU':{name:'Bookmarks Tab',cmd:function(){
               var newTab = document.getElementById("content").addTab("chrome://browser/content/bookmarks/bookmarksPanel.xul");
        getBrowser (). selectedTab = newTab;}},
           'UL':{name:'Open file',cmd:function(){BrowserOpenFileWindow();}},
           'ULRLR':{name:'Open folder',cmd:function(){setTimeout(function(aEvent) {
          var nsIFilePicker = Components.interfaces.nsIFilePicker;
          var dp = Components.classes["@mozilla.org/filepicker;1"]
                .createInstance(nsIFilePicker);
         dp.init(window, "", dp.modeGetFolder);
         if(dp.show() == dp.returnCancel) return;
         openUILink(dp.fileURL.spec, aEvent, false, true); }, 0);;}},
           'DRLR':{name:'close all tabs on right',cmd:function(){var aTab = getBrowser().mCurrentTab;    
                var tabPos = aTab._tPos;
                var childNodes = getBrowser().mTabContainer.childNodes;
                if (tabPos < childNodes.length - 1) {
            for (var i = childNodes.length - 1; i >= tabPos; --i) {
        if (childNodes[i] != aTab)
        getBrowser().removeTab(childNodes[i]);}}}},
           'DLRL':{name:'close all tabs on left',cmd:function(){var aTab = getBrowser().mCurrentTab;    
                var tabPos = aTab._tPos;
                var childNodes = getBrowser().mTabContainer.childNodes;
            if (tabPos > 0) {
            for (var i = tabPos; i >= 0; --i) {
        if (childNodes[i] != aTab)
        getBrowser().removeTab(childNodes[i]);}}}},
       'DRLRL':{name:'close other Window',cmd:function(){
            var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator);
                var enumerator = windowManager.getEnumerator(null);
                var thisWindow = windowManager.getMostRecentWindow(null);
                while (enumerator.hasMoreElements()) {var thatWindow = enumerator.getNext(); if (thisWindow != thatWindow) {thatWindow.close();}};}},    
           'DLRLR':{name:'Tabs Sort',cmd:function(){var map = { __proto__: null };
        var terms = [];
        Array.forEach(
            gBrowser.tabContainer.childNodes,
            function(tab) {
            var uri = tab.linkedBrowser.currentURI.spec;
            terms.push(uri);
            if(uri in map)
                map[uri].push(tab);
            else
                map[uri] = [tab];});
        terms.sort().forEach(function(uri, index) {
            var tab = map[uri].shift();
            //LOG(uri + " => " + index);
             gBrowser.moveTabTo(tab, index);});}},
           'DRL':{name:'Open last Tab',cmd:function(){var lastTab = gBrowser.mTabs[gBrowser.mTabs.length - 1];
                gBrowser.selectedTab = lastTab;}},
           'DLR':{name:'Open first Tab',cmd:function(){gBrowser.selectedTab = gBrowser.mTabContainer.childNodes[0];}},    
           'DR':{name:'Page Right',cmd:function(){content.scrollTo(content.scrollMaxX, content.scrollY);;}},
       'DL':{name:'Page Left',cmd:function(){content.scrollTo(0, content.scrollY);;}},
           'LDRL':{name:'Show cookies',cmd:function(){window.open('chrome://browser/content/preferences/cookies.xul', 'Browser:Cookies', 'chrome,resizable=yes');;}},
           'LDR':{name:'Menege cookies',cmd:function(){var bundle = Components.classes["@mozilla.org/intl/stringbundle;1"]
                .getService(Components.interfaces.nsIStringBundleService)
                .createBundle("chrome://browser/locale/preferences/preferences.properties");
                var host = "";
                if(["view-source:", "about:", "chrome:", "resource:", "javascript:", "data:"].indexOf(content.location.protocol) == -1)
                try { host = content.location.host; }
                catch(e) {}
                var params = { blockVisible   : true,
                sessionVisible : true,
                allowVisible   : true,
                prefilledHost  : host,
                permissionType : "cookie",
                windowTitle    : bundle.GetStringFromName("cookiepermissionstitle"),
                introText      : bundle.GetStringFromName("cookiepermissionstext") };
                var win = Components.classes["@mozilla.org/appshell/window-mediator;1"]
                .getService(Components.interfaces.nsIWindowMediator)
                .getMostRecentWindow("Browser:Permissions");
                if(win)
                win.focus();
                else
                window.openDialog("chrome://browser/content/preferences/permissions.xul", "_blank", "", params);}},
          'URD':{name:'Show / Hide navigator-toolbox',cmd:function(){
                var a = document.getElementById("nav-bar");
                a.collapsed = !a.collapsed;}},
          'LR':{name:'Translate',cmd:function(){var t = content.getSelection().toString();
        if(t) {gBrowser.selectedTab = gBrowser.addTab("http://translate.google.com/translate_t?hl=ru#auto|ru|"+t);}
        else { gBrowser.loadURI("http://translate.google.com/translate?u="+encodeURIComponent(getBrowser().currentURI.spec)+"&hl=ru&ie=UTF-8&sl=auto&tl=ru");};}},      
          'RL':{name:'Translate selected /page in new tab',cmd:function(){
                const UJS_TOOLBAR_ID = "ujs_toolbar";
        const UJS_GOOGLE_TRANSLATE_FRAME_ID = "ujs_googletranslateframe";

        function cbTranslatorButton (browser)
        {
            this. doc = browser. contentDocument;
            this. win = browser. contentDocument. defaultView;
        }
        cbTranslatorButton. prototype =
        {
            doc: null,
            win: null,
            toolbar: null,
            clse: null,
            frame: null,
    
            grabX: 0,
            origX: 0,
            grabY: 0,
            origY: 0,
    
            handleEvent: function (event)
            {
            switch (event. type)
            {
                case "mousedown":
                this. tbOnMouseDown (event);
                break;
                case "mousemove":
                this. tbOnMouseMove (event);
                break;
                case "mouseup":
                this. tbOnMouseUp (event);
                break;
                case "click":
                this. clseOnClick (event);
                break;
                case "load":
                this. frameOnLoad (event);
                break;
                default:;
            }
                },
    
            tbOnMouseMove: function (event)
            {
            this. toolbar. style. left = this. origX + event. clientX - this. grabX + 'px';
            this. toolbar. style. top = this. origY + event. clientY - this. grabY + 'px';
            },
    
            tbOnMouseUp: function (event)
            {
            this. doc. removeEventListener ('mousemove', this, false);
            this. toolbar. style. zIndex = 9997;
            },
    
            tbOnMouseDown: function (event)
            {
            if (event. target == this. toolbar)
            {
                event. preventDefault ();
                this. toolbar. style. zIndex = 9998;
                this. grabX = event. clientX;
                this. grabY = event. clientY;
                this. origX = parseInt (this. toolbar. style. left);
                this. origY = parseInt (this. toolbar. style. top);
                this. doc. addEventListener ('mousemove', this, false);
                this. doc. addEventListener ('mouseup', this, false);
            }
                },
    
            removeEventListener: function (element, eventType, captureFlag)
            {
            try
            {
                element. removeEventListener (eventType, this, captureFlag);
            }
            catch (err) {}
            },
    
            removeElement: function (element)
            {
            try
            {
                element. parentNode. removeChild (element);
            }
            catch (err) {}
            },
              clseOnClick: function (event)
            {
            this. clse. removeEventListener ('click', this, false);
            this. removeEventListener (this. toolbar, 'mousedown', false);
            this. removeEventListener (this. doc, 'mousemove', false);
            this. removeEventListener (this. doc, 'mouseup', false);
            this. removeEventListener (this. frame, 'load', false);
            this. removeElement (this. toolbar);
            this. removeElement (this. frame);
            this. frame = null;
            this. clse = null;
            this. toolbar = null;
            this. win = null;
            this. doc = null;
            },
    
            ujs_createWindow: function (txt)
            {
        var doc = this. doc;
        var win = this. win;
        var h, w;
        var txtLen = txt. length;
        var tbId = UJS_TOOLBAR_ID;
        if (arguments. length > 2)
            tbId += arguments [2];
        var toolbar = doc. getElementById (tbId);
        if (toolbar)
            toolbar. parentNode. removeChild (toolbar);
        toolbar = doc. createElement ('div');
        this. toolbar = toolbar;
        toolbar. id = tbId;
        if (arguments. length == 5)
        {
            w = arguments [3];
            h = arguments [4]
        }
        else
        {
            h = 15;
            w = 20;
            if (txtLen > 2000)
            {
                h = 50;
                w = 66
            }
            else if (txtLen > 250)
            {
                h = 25;
                w = 33
            };
            h = parseInt (h * win. innerHeight / 30);
            w = parseInt (w * win. innerWidth / 50)
        };
        var title = (arguments. length > 1) ?arguments [1]: '<a href="http://translate.google.com/" target="_blank" style="text-decoration:none;color:#000099;font:16px Times New Roman;">Google Translate</a>';
        toolbar. innerHTML = '<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjIyt5EXfQAAAStJREFUOE+1k9tqhDAQhtOHqO37P4E3IlQFQQSvBBVEl1TBVVi1B+1C8XAx3QmNqIVqhBV+DEPmy8z8ycPX9Ruq6kLqqiRHvkfpiUjSMyGUJtB1HfR9D8MwCAlz6voNkEGCIGDJeZ5DURTCatoWNE0D4nk+jOMoDMBD8fDPpoGXu4OyLAPUutV1/N+KcPPNPaY4jidYktwG+hunlLL4ZmsI4EloxhxiGAY4jgNpmm6D8DQEcBj/I8SyrKnSzYr4bDzPm2CKoiwgu1rDTfN2eEWu6y4M2KxoPRNVVRcz4xXvdm0+k/nMwjDc5xraa9v2n5kgwDRNMdfQXtT6Us7jy9Z8n738Iw82O5/hUpag6zqQ0+kVmqZld0NUURSxl48M8v5xZQtZlg8Jc5HxA5fIE73hTda3AAAAAElFTkSuQmCC" title="Close" width="18" height="18">&nbsp;' + title + '<div></div>';
        toolbar. setAttribute('style', 'position:fixed;background:white;display:block;visibility:hidden;left:0;top:0;height:auto;width:' + w + 'px;font:16px Times New Roman;border:1px solid gray;padding:3px;z-index:9997;overflow:visible;cursor:move;');
        toolbar. addEventListener ('mousedown', this, false);
        var clse = toolbar. firstChild;
        this. clse = clse;
        clse. setAttribute ('style', 'float:right;background:white;padding:0;margin:0;border:none;cursor:pointer;');
        clse. addEventListener ('click', this, false);
        var textbar = toolbar. lastChild;
        textbar. innerHTML = txt;
        textbar. setAttribute ('style', 'display:block;border:1px solid #aaaaaa;margin:2px 0 0 0;padding:4px;background-color:#fafcfe;font:14px Times New Roman;height:' + h + 'px;width:auto;overflow:auto;cursor:text;');
        doc. documentElement. appendChild (toolbar);
        var halfWidth = parseInt (toolbar. offsetWidth / 2);
        var strict = doc. compatMode == 'CSS1Compat';
        var mX = (strict?
                    doc. documentElement. clientWidth:
                    doc. body. clientWidth) - toolbar. offsetWidth;
        var mY = (strict?
                    doc. documentElement. clientHeight:
                    doc. body. clientHeight) - toolbar. offsetHeight;
        var lastClickX = win. cbTranslateButton2X;
        var lastClickY = win. cbTranslateButton2Y;
        toolbar. style. left = ((lastClickX < mX + halfWidth)?
                                    (lastClickX > halfWidth?
                                        (lastClickX - halfWidth):
                                        0):
                                        mX) + "px";
        toolbar. style. top = ((lastClickY < mY)?
                                lastClickY:
                                mY) + "px";
        toolbar. style. visibility = 'visible';
        return textbar;
    },
    
    frameOnLoad: function (event)
    {
        var fr = event. currentTarget;
        fr. removeEventListener ('load', this, false);
        var tbId = fr. id. substring (UJS_GOOGLE_TRANSLATE_FRAME_ID. length);
        var toolbar = this. doc. getElementById (UJS_TOOLBAR_ID + tbId);
        var frdoc = fr. contentDocument;
        
        var sl = frdoc.getElementById('nc_sl'), dl = frdoc.getElementById('nc_dl'), tl = frdoc.getElementById('nc_tl');
            if(sl && dl && tl){
                var status = ((dl.value || sl.value)+' -\u203A '+tl.value).toUpperCase();
        };
        
        var a = frdoc. getElementById ('nc_sl');
        var title = (a && !/#808080/. test (a. innerHTML))?
                        '&nbsp;-&nbsp;' + status:
                        '';
        var result = '';
            var r = frdoc.getElementById('result_box'), s = frdoc.getElementById('source'), d = frdoc.getElementById('gt-res-dict');
            if(r){
                var p = r.getElementsByTagName('span');
                for(var i = 0, n; n = p[i]; i++){
                    n.removeAttribute('onmouseover');
                    n.removeAttribute('onmouseout');
                    n.setAttribute('style', 'background-color:inherit;color:inherit;font-size:inherit;font-family:serif;');
                };
                result = r.innerHTML;
            };
            if(s && d && d.getElementsByTagName('ol').length){
                var a = d.getElementsByTagName('*');
                for(var i = a.length; i--;){
                    var n = a[i];
                    switch(n.nodeName.toLowerCase()){
                        case 'ol': n.setAttribute('style', 'margin:1px 5px;padding:0;'); break;
                        case 'li': n.setAttribute('style', 'margin:0;padding:1px 5px;font:12px Arial;list-style-type:none;float:left;font-weight:bold;'); break;
                        case 'div': n.setAttribute('style', 'margin:0;padding:0 2px;font:12px Arial;white-space:nowrap;'); break;
                        case 'a':
                        case 'h3': n.parentNode.removeChild(n); break;
                    }
                };
                result = '<b><q>'+s.value+'</q></b>'+d.innerHTML;
            };
    
        var ancor = toolbar. getElementsByTagName ("a") [0];
        ancor. innerHTML += title;
        ancor. nextSibling. innerHTML = result;
        setTimeout
        (
            function ()
            {
                fr. parentNode. removeChild (fr);
            },
            0
        );
    },

    google_translate: function (language)
    {
        var doc = this. doc;
        var win = this. win;
        var t = document. commandDispatcher. focusedWindow. getSelection (). toString ();
        var lng = (win. navigator. language == 'ru')? 'ru': 'en';

        var encodeBase64 = function(str){
        var chr1, chr2, chr3, rez = '', arr = [], i = 0, j = 0, code = 0;
        var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split('');

        while(code = str.charCodeAt(j++)){
            if(code < 128){
                arr[arr.length] = code;
            }
            else if(code < 2048){
                arr[arr.length] = 192 | (code >> 6);
                arr[arr.length] = 128 | (code & 63);
            }
            else if(code < 65536){
                arr[arr.length] = 224 | (code >> 12);
                arr[arr.length] = 128 | ((code >> 6) & 63);
                arr[arr.length] = 128 | (code & 63);
            }
            else{
                arr[arr.length] = 240 | (code >> 18);
                arr[arr.length] = 128 | ((code >> 12) & 63);
                arr[arr.length] = 128 | ((code >> 6) & 63);
                arr[arr.length] = 128 | (code & 63);
            }
        };

        while(i < arr.length){
            chr1 = arr[i++];
            chr2 = arr[i++];
            chr3 = arr[i++];

            rez += chars[chr1 >> 2];
            rez += chars[((chr1 & 3) << 4) | (chr2 >> 4)];
            rez += chars[chr2 === undefined ? 64 : ((chr2 & 15) << 2) | (chr3 >> 6)];
            rez += chars[chr3 === undefined ? 64 : chr3 & 63];
            };
            return rez;
            };
        
            if (t && location. hostname != 'sitegetter.net')
            {
                this. ujs_createWindow
                (
                (lng == 'ru'?
                    '\u041F\u0435\u0440\u0435\u0432\u043E\u0434\u0438\u043C':
                    'Подождите идет перевод'
                ) +
                '\u2026',
                '<a href="http://translate.google.com/" target="_blank" style="text-decoration:none;color:#000099;font:16px Times New Roman;">Google перевод</a>',
                btoa (escape (t))
            );
            var gtfId = UJS_GOOGLE_TRANSLATE_FRAME_ID;
            var fr = doc. getElementById (gtfId);
            if (!fr)
                fr = doc. createElement ('iframe');
            this. frame = fr;
            fr. setAttribute ('id', gtfId + btoa (escape (t)));
            fr. setAttribute ('frameborder', '0');
            fr. setAttribute ('style', 'width:0px;height:0px;visibility:hidden;position:absolute;left:-999em;');
            fr. setAttribute
            (
                'src',
    
                'http://sitegetter.net/browse.php?u='+encodeBase64('://translate.google.com/translate_t?&hl=ru&text=' +
                encodeURIComponent (t) +
                '&langpair=' +
                language +
                '&tbb=1&ujs=gtt')+'&b=29&f=norefer&ujs=gtt'
                );
                fr. addEventListener ('load', this, false);
                doc. documentElement. appendChild (fr);
            }
            else
            {
                getBrowser (). addTab
                (
                'http://translate.google.com/translate?u=' +
                escape (doc. location. href) +
                '&hl=' +
                lng +
                '&langpair=' +
                language +
                '&tbb=1' +
                (doc. charset? '&ie=' + doc. charset: ''),
                null,
                null
                );
              }
                }
              };
        var ct = getBrowser (). selectedTab;
        if (!ct. cbTranslateButton5)
            ct. cbTranslateButton5 = [];
        var translator = new cbTranslatorButton (getBrowser ());
        ct. cbTranslateButton5. push (translator);
        translator. google_translate ("auto|ru");}},
          'LRL':{name:'Open URL from Clipboard',cmd:function(){const IN_NEW_TAB = true;
                const IN_BACKGROUND = false;
                var str = readFromClipboard();
                if (!str)
                return;
                if (IN_NEW_TAB)
                gBrowser.loadOneTab(str, null, null, null, IN_BACKGROUND, false);
                else
                gBrowser.loadURI(str);}},
           'LRLR':{name:'Open selected links',cmd:function(){warn_if_opening_more_than = 16;
        var browser = getBrowser();
        var n_to_open,dl,dll,i;
        function linkIsSafe(u) {
          if (u.substr(0,7)=='mailto:' ) return false;
          if (u.substr(0,11)=='javascript:') return false;
          return true;}
        n_to_open = 0;
        dl = window._content.document.links;
        dll = dl.length;
        if (window._content.getSelection && window._content.getSelection().containsNode) {
          for(i=0; i<dll; ++i) {
            if (window._content.getSelection().containsNode(dl[i], true) && linkIsSafe(dl[i].href)) {
              ++n_to_open;} }
          if (n_to_open && (n_to_open<=warn_if_opening_more_than || confirm('Open ' + n_to_open + ' selected links in new windows?'))) {
            for(i=0; i<dll; ++i) {
              if (window._content.getSelection().containsNode(dl[i], true) && linkIsSafe(dl[i].href)) {
            browser.addTab(dl[i].href);}}}}
        if (!n_to_open) { /* if no links selected, open all links */
          for(i = 0; i < dll; ++i) {
            if (linkIsSafe(dl[i].href)) ++n_to_open; }
          if (!n_to_open) alert ('no links');
          else {
            if (confirm('No links selected. Open ' + n_to_open + ' links in new windows?')) {
              for (i = 0; i < dll; ++i) {
            if (linkIsSafe(dl[i].href)) {
              browser.addTab(dl[i].href);}}}}};}},
          'RLR':{name:'Clipboard search(current engine)',cmd:function(){var str = readFromClipboard();
                var ss = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
                var submission = ss.currentEngine.getSubmission(str, null);
                gBrowser.loadOneTab(submission.uri.spec, null, null, submission.postData, true, false);}},   
          'UDUD':{name:'Stop Loading All Tabs',cmd:function(){var len = gBrowser.mPanelContainer.childNodes.length;
                for (var i = 0; i < len; i++) {
                gBrowser.getBrowserAtIndex(i).stop();}}},
          'URLRL':{name:'Save website favicons',cmd:function(){this.image=document.getElementById("page-proxy-favicon").src;
            openUILinkIn(this.image,"save");}},
                         
              
},

init:function(){
    var self=this;
    var events=["mousedown","mousemove","mouseup","contextmenu"];
    if(this.enableRockerGestures)events.push("draggesture");
    if(this.enableWheelGestures)events.push("DOMMouseScroll");
    function registerEvents(aAction,eventArray){
        eventArray.forEach(function(aType){
                getBrowser().mPanelContainer[aAction+"EventListener"](aType,self,aType=="contextmenu");
        });
    };
    registerEvents("add",events);
    window.addEventListener("unload",function(){
            registerEvents("remove",events);
        },false);
},

handleEvent:function(event){
    switch(event.type){
        case"mousedown":
            if(event.button==2){
                this._isMouseDownR=true;
                this._hideFireContext=false;
                this._startGesture(event);
            }
            if(this.enableRockerGestures){
                if(event.button==2&&this._isMouseDownL){
                    this._isMouseDownR=false;
                    this._shouldFireContext=false;
                    this._hideFireContext=true;
                    this._directionChain="L>R";
                    this._stopGesture(event);
                }else if(event.button==0){
                    this._isMouseDownL=true;
                    if(this._isMouseDownR){
                        this._isMouseDownL=false;
                        this._shouldFireContext=false;
                        this._hideFireContext=true;
                        this._directionChain="L<R";
                        this._stopGesture(event);
                    }
                }
            }
            break;
        case"mousemove":
            if(this._isMouseDownR){
                this._hideFireContext=true;
                this._progressGesture(event);
            }
            break;
        case"mouseup":
            if(event.ctrlKey&&event.button==2){
                this._isMouseDownL=false;
                this._isMouseDownR=false;
                this._shouldFireContext=false;
                this._hideFireContext=false;
                this._directionChain='';
                event.preventDefault();
                XULBrowserWindow.statusTextField.label="Reset Gesture";
                break;
            }
            if(this._isMouseDownR&&event.button==2){
                if(this._directionChain)this._shouldFireContext=false;
                this._isMouseDownR=false;
                this._stopGesture(event);
                if(this._shouldFireContext&&!this._hideFireContext){
                    this._shouldFireContext=false;
                    this._displayContextMenu(event);
                }
            }else if(this.enableRockerGestures&&event.button==0&&this._isMouseDownL){
                this._isMouseDownL=false;
                this._shouldFireContext=false;
            }else if(this.enablePopupGestures&&(event.button==0||event.button==1)&&event.target.localName=='menuitem'){
                this._isMouseDownL=false;
                this._shouldFireContext=false;
                var popup=document.getElementById(this.POPUP_ID);
                var activeItem=event.target;
                switch(popup.getAttribute("gesturecommand")){
                    case"WebSearchPopup":
                        var selText=popup.getAttribute("selectedtext");
                        var engine=activeItem.engine;
                        if(!engine)break;
                        var submission=engine.getSubmission(selText,null);
                        if(!submission)break;
                        document.getElementById('searchbar').textbox.value=selText;
                        gBrowser.loadOneTab(submission.uri.spec,null,null,submission.postData,null,false);
                        break;
                    case"ClosedTabsPopup":
                        undoCloseTab(activeItem.index);
                        break;
                    case"HistoryPopup":
                        gBrowser.webNavigation.gotoIndex(activeItem.index);
                        break;
                    case"AllTabsPopup":
                        gBrowser.selectedTab=gBrowser.mTabs[activeItem.index];
                        break;
                }
                popup.hidePopup();
            }
            break;
    case"popuphiding":
        var popup=document.getElementById(this.POPUP_ID);
        popup.removeEventListener("popuphiding",this,true);
        document.documentElement.removeEventListener("mouseup",this,true);
        while(popup.hasChildNodes())popup.removeChild(popup.lastChild);
        break;
    case"contextmenu":
        if(this._isMouseDownL||this._isMouseDownR||this._hideFireContext){
            event.preventDefault();
            event.stopPropagation();
            this._shouldFireContext=true;
            this._hideFireContext=false;
        }
        break;
    case"DOMMouseScroll":
        if(this.enableWheelGestures&&this._isMouseDownR){
            event.preventDefault();
            event.stopPropagation();
            this._shouldFireContext=false;
            this._hideFireContext=true;
            this._directionChain="W"+(event.detail>0?"+":"-");
            this._stopGesture(event);
        }
        break;
    case"draggesture":
        this._isMouseDownL=false;
        break;
    }
},

_displayContextMenu:function(event){
    var evt=event.originalTarget.ownerDocument.createEvent("MouseEvents");
    evt.initMouseEvent("contextmenu",true,true,event.originalTarget.defaultView,0,event.screenX,event.screenY,event.clientX,event.clientY,false,false,false,false,2,null);
    event.originalTarget.dispatchEvent(evt);
},

_startGesture:function(event){
    this._lastX=event.screenX;
    this._lastY=event.screenY;
    this._directionChain="";
},

_progressGesture:function(event){
    var x=event.screenX, y=event.screenY;
    var lastX=this._lastX, lastY=this._lastY;
    var subX=x-lastX, subY=y-lastY;
    var distX=(subX>0?subX:(-subX)),distY=(subY>0?subY:(-subY));
    var direction;
    if(distX<10&&distY<10)return;
    if(distX>distY)direction=subX<0?"L":"R";
    else direction=subY<0?"U":"D";
    var dChain = this._directionChain;
    if(direction!=dChain.charAt(dChain.length-1)){
        dChain+=direction;
        this._directionChain+=direction;
        var gesture=this.GESTURES[dChain];
        XULBrowserWindow.statusTextField.label="Gesture: "+dChain+(gesture?' ('+gesture.name+')':'');
    }
    this._lastX=x;
    this._lastY=y;
},

_stopGesture:function(event){
    try{
        if(dChain=this._directionChain)this.GESTURES[dChain].cmd(this,event);
        XULBrowserWindow.statusTextField.label="";
    }catch(e){
        XULBrowserWindow.statusTextField.label='Unknown Gesture: '+dChain;
    }
    this._directionChain="";
},

_buildPopup:function(event,gestureCmd){
    if(!this.enablePopupGestures)return;
    var popup=document.getElementById(this.POPUP_ID);
    if(!popup){
        popup=document.createElement("popup");
        popup.id=this.POPUP_ID;
    }
    document.getElementById("mainPopupSet").appendChild(popup);
    popup.setAttribute("gesturecommand",gestureCmd);
    switch(gestureCmd){
        case"WebSearchPopup":
            var searchSvc=Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
            var engines=searchSvc.getVisibleEngines({});
            if(engines.length<1)throw"No search engines installed.";
            for(var i=engines.length-1;i>=0;--i){
                var engine = engines[i];
                var menuitem=document.createElement("menuitem");
                menuitem.setAttribute("label",engine.name);
                menuitem.setAttribute("class","menuitem-iconic");
                if(engine.iconURI)menuitem.setAttribute("src",engine.iconURI.spec);
                popup.insertBefore(menuitem,popup.firstChild);
                menuitem.engine=engine;
            }
            popup.setAttribute("selectedtext",getBrowserSelection().toString());
            break;
        case"ClosedTabsPopup":
            try{
                if(!gPrefService.getBoolPref("browser.sessionstore.enabled"))throw"Session Restore feature is disabled.";
            }catch(e){}
            var ss=Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
            if(ss.getClosedTabCount(window)==0)throw"No restorable tabs in this window.";
            var undoItems=eval("("+ss.getClosedTabData(window)+")");
            for(var i=0,LEN=undoItems.length;i<LEN;i++){
                var menuitem=popup.appendChild(document.createElement("menuitem"));
                menuitem.setAttribute("label",undoItems[i].title);
                menuitem.setAttribute("class","menuitem-iconic bookmark-item");
                menuitem.index=i;
                var iconURL=undoItems[i].image;
                if(iconURL)menuitem.setAttribute("image",iconURL);
            }
            break;
        case"HistoryPopup":
            var sessionHistory=gBrowser.webNavigation.sessionHistory;
            if(sessionHistory.count<1)throw"No back/forward history for this tab.";
            var curIdx=sessionHistory.index;
            for(var i=0,shc=sessionHistory.count;i<shc;i++){
                var entry=sessionHistory.getEntryAtIndex(i,false);
                if(!entry)continue;
                var menuitem=document.createElement("menuitem");
                popup.insertBefore(menuitem,popup.firstChild);
                menuitem.setAttribute("label",entry.title);
                try{
                    var iconURL=Cc["@mozilla.org/browser/favicon-service;1"].getService(Ci.nsIFaviconService).getFaviconForPage(entry.URI).spec;
                    menuitem.style.listStyleImage="url("+iconURL+")";
                }catch(e){}
                menuitem.index=i;
                if(i==curIdx){
                    menuitem.style.listStyleImage="";
                    menuitem.setAttribute("type","radio");
                    menuitem.setAttribute("checked","true");
                    menuitem.className="unified-nav-current";
                    activeItem=menuitem;
                }else{
                    menuitem.className=i<curIdx?"unified-nav-back menuitem-iconic":"unified-nav-forward menuitem-iconic";
                }
            }
            break;
        case"AllTabsPopup":
            var tabs=gBrowser.mTabs;
            if(tabs.length<1)return;
            for(var i=0,LEN=tabs.length;i<LEN;i++){
                var menuitem=popup.appendChild(document.createElement("menuitem"));
                var tab=tabs[i];
                menuitem.setAttribute("class","menuitem-iconic bookmark-item");
                menuitem.setAttribute("label",tab.label);
                menuitem.setAttribute("crop",tab.getAttribute("crop"));
                menuitem.setAttribute("image",tab.getAttribute("image"));
                menuitem.index=i;
                if(tab.selected)activeItem=menuitem;
            }
            break;
    }
    document.popupNode=null;
    document.tooltipNode=null;
    popup.addEventListener("popuphiding",this,true);
    popup.openPopup(null,"",event.clientX,event.clientY,false,false);
    document.documentElement.addEventListener("mouseup",this,true);
},
  };
// Запускаем функцию
if (this.CBMouseGesturesRun) return;
this.CBMouseGesturesRun = true; 
ucjsMouseGestures.init()

Отредактировано bunda1 (10-05-2012 22:16:58)

Отсутствует

 

№1210-05-2012 22:17:55

Пандёнок
Участник
 
Группа: Extensions
Зарегистрирован: 04-11-2008
Сообщений: 5543
UA: Firefox 13.0

Re: Тормоза с прорисовкой жестов Firegestures

brici пишет

И чем это Вам мой совет не понравился ? Основанный между прочим, на личном опыте.

Тем, что лучше найти настоящее решение проблемы, чем оставаться на старой версии, которая со временем становится несовместимой (если это дополнение) или небезопасной (о браузере).

Отсутствует

 

№1311-05-2012 10:07:09

Ferguss114
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 207
UA: Firefox 13.0

Re: Тормоза с прорисовкой жестов Firegestures

bunda1 пишет

Ferguss114
Кнопка которая работает как Firegestures.

скрытый текст

Ух ты! Даже не думал, что такое возможно! :D
Да, с этой кнопкой жесты на той странице не тормозят. Правда, и визуализации жестов нет. Может, поэтому?

Отсутствует

 

№1411-05-2012 10:56:47

2k1dmg
Участник
 
Группа: Members
Зарегистрирован: 06-04-2011
Сообщений: 190
UA: Firefox 12.0

Re: Тормоза с прорисовкой жестов Firegestures

bunda1
Если панель закладок была скрыта то вот это не работает (может только у меня)     

скрытый текст

Выделить код

Код:

'ULD':{name:'Show/Hide BookmarksToolbar',cmd:function(){var toolbar = document.getElementById("PersonalToolbar");
          toolbar.collapsed = !toolbar.collapsed;
          document.persist(toolbar.id, "collapsed");;}},


точнее она открывается пустой, а вот так работает (код взял здесь http://custombuttons.mozdev.org/drupal/ … umentation)

скрытый текст

Выделить код

Код:

var toolbar = document.getElementById("PersonalToolbar");
var visibility = toolbar.collapsed;
setToolbarVisibility(toolbar, visibility);

Отсутствует

 

№1514-05-2012 01:48:05

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Тормоза с прорисовкой жестов Firegestures

2k1dmg
Дело в том, что я не использую панель закладок для закладок.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]