Advertisement
senicar

boostraped extension - autoscroll:start

Sep 17th, 2014
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
  2.  
  3. Cu.import("resource://gre/modules/Services.jsm");
  4.  
  5. // called by aWindow.addEventListener("click", clicker, true);
  6. var clicker = function(e) {
  7.     let aWindow = this.window;
  8.  
  9.     // middle click
  10.     if( e.button === 1 ) {
  11.         e.stopPropagation();
  12.         runAction(e, aWindow);
  13.     } else return false;
  14. };
  15.  
  16. var runAction = function(e, aWindow) {
  17.     // initial, it used to work
  18.     aWindow.gBrowser.selectedBrowser.startScroll(e);
  19.  
  20.     // failed attempt 1
  21.     //
  22.     //aWindow.messageManager.sendAsyncMessage("Autoscroll:Start", {scrolldir:"NSEW", screenX:e.screenX, screenY:e.screenY});
  23.  
  24.     // failed attempt 2
  25.     //
  26.     //aWindow.gBrowser.selectedBrowser.messageManager.sendAsyncMessage("Autoscroll:Start", {scrolldir:"NSEW", screenX:e.screenX, screenY:e.screenY});
  27.  
  28. };
  29.  
  30. /* -------------------------------------------------------*
  31. ** Bootstrapped
  32. ** -------------------------------------------------------*/
  33.  
  34. function install(data, reason) {
  35. }
  36.  
  37.  
  38. function uninstall(data, reason) {
  39. }
  40.  
  41.  
  42. function startup(data, reason) {
  43.  
  44.     let windows = Services.wm.getEnumerator("navigator:browser");
  45.     while (windows.hasMoreElements()) {
  46.         let domWindow = windows.getNext().QueryInterface(Ci.nsIDOMWindow);
  47.         loadIntoWindow(domWindow);
  48.     }
  49.  
  50.     // Load into any new windows
  51.     Services.wm.addListener(windowListener);
  52. }
  53.  
  54.  
  55. function shutdown(data, reason) {
  56.     Services.wm.removeListener(windowListener);
  57.  
  58.     let windows = Services.wm.getEnumerator("navigator:browser");
  59.     while (windows.hasMoreElements()) {
  60.         let domWindow = windows.getNext().QueryInterface(Ci.nsIDOMWindow);
  61.         unloadFromWindow(domWindow);
  62.     }
  63. }
  64.  
  65. var loadIntoWindow = function(aWindow) {
  66.     if (!aWindow)
  67.         return;
  68.  
  69.     aWindow.addEventListener("click", clicker, true);
  70. }
  71.  
  72. var unloadFromWindow = function(aWindow) {
  73.     if (!aWindow)
  74.         return;
  75.  
  76.     aWindow.removeEventListener("click", clicker, true);
  77. }
  78.  
  79.  
  80. var windowListener = {
  81.     onOpenWindow: function(aWindow) {
  82.         // Wait for the window to finish loading
  83.         let domWindow = aWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow);
  84.         domWindow.addEventListener("load", function() {
  85.             domWindow.removeEventListener("load", arguments.callee, false);
  86.             loadIntoWindow(domWindow);
  87.         }, false);
  88.     },
  89.  
  90.     onCloseWindow: function(aWindow) {},
  91.     onWindowTitleChange: function(aWindow, aTitle) {}
  92. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement