diff -r fd2a78968403 chrome/content/InputHandler.js --- a/chrome/content/InputHandler.js Wed Feb 10 14:58:37 2010 -0500 +++ b/chrome/content/InputHandler.js Fri Feb 12 19:13:15 2010 +0100 @@ -749,19 +749,22 @@ MouseModule.prototype = { _defaultDragger: { isDraggable: function isDraggable(target, scroller) { let sX = {}, sY = {}; scroller.getScrolledSize(sX, sY); let rect = target.getBoundingClientRect(); return sX.value > rect.width || sY.value > rect.height; }, - dragStart: function dragStart(cx, cy, target, scroller) {}, + dragStart: function dragStart(cx, cy, target, scroller) { + scroller.element.setAttribute("panning", "true"); + }, dragStop : function dragStop(dx, dy, scroller) { + scroller.element.removeAttribute("panning"); return this.dragMove(dx, dy, scroller); }, dragMove : function dragMove(dx, dy, scroller) { if (scroller.getPosition) { try { let oldX = {}, oldY = {}; diff -r fd2a78968403 chrome/content/browser.js --- a/chrome/content/browser.js Wed Feb 10 14:58:37 2010 -0500 +++ b/chrome/content/browser.js Fri Feb 12 19:13:15 2010 +0100 @@ -1281,16 +1281,18 @@ Browser.MainDragger = function MainDragg Browser.MainDragger.prototype = { isDraggable: function isDraggable(target, scroller) { return true; }, dragStart: function dragStart(clientX, clientY, target, scroller) { // Make sure pausing occurs before any early returns. this.bv.pauseRendering(); + scroller.element.setAttribute("panning", "true"); + // XXX shouldn't know about observer // adding pause in pauseRendering isn't so great, because tiles will hardly ever prefetch while // loading state is going (and already, the idle timer is bigger during loading so it doesn't fit // into the aggressive flag). this.bv._idleServiceObserver.pause(); let [x, y] = Browser.transformClientToBrowser(clientX, clientY); let element = Browser.elementFromPoint(x, y); @@ -1348,16 +1350,17 @@ Browser.MainDragger.prototype = { }, dragStop: function dragStop(dx, dy, scroller) { this.draggedFrame = null; this.dragMove(Browser.snapSidebars(), 0, scroller); Browser.tryUnfloatToolbar(); + scroller.element.removeAttribute("panning"); this.bv.resumeRendering(); // XXX shouldn't know about observer this.bv._idleServiceObserver.resume(); }, dragMove: function dragMove(dx, dy, scroller) { let elem = this.draggedFrame; diff -r fd2a78968403 chrome/content/browser.xul --- a/chrome/content/browser.xul Wed Feb 10 14:58:37 2010 -0500 +++ b/chrome/content/browser.xul Fri Feb 12 19:13:15 2010 +0100 @@ -233,17 +233,17 @@ - + diff -r fd2a78968403 chrome/content/content.css --- a/chrome/content/content.css Wed Feb 10 14:58:37 2010 -0500 +++ b/chrome/content/content.css Fri Feb 12 19:13:15 2010 +0100 @@ -54,32 +54,72 @@ html button::-moz-focus-inner, input[typ border: 0px !important; } html button:focus::-moz-focus-inner, input[type="reset"]:focus::-moz-focus-inner, input[type="button"]:focus::-moz-focus-inner, input[type="submit"]:focus::-moz-focus-inner { border-color: ButtonText !important; } /* Style the scrollbars */ -scrollbar { +scrollbar[orient="vertical"] { -moz-appearance: none !important; - display: none !important; + visibility: hidden; + position: relative; + min-width: 12px; + margin-left: -12px; + background-color: transparent !important; + background-image: none !important; + z-index: 1 !important; +} + +scrollbar[orient="horizontal"] { + -moz-appearance: none !important; + position: relative; + visibility: hidden; + min-height: 12px; + margin-top: -12px; + background-color: transparent !important; + background-image: none !important; + z-index: 1 !important; +} + +/* The z-index is forced here otherwise the scrollbars are draw beneath the content */ +#content-scrollbox > #tile-container { + z-index: 0 !important; +} + +scrollbar[orient="vertical"] thumb { + max-width: 8px !important; +} + +scrollbar[orient="horizontal"] thumb { + max-height: 8px !important; +} + +*[panning] scrollbar { + visibility: visible !important; +} + +scrollbox { + overflow-y: scroll; + overflow-x: scroll; } scrollbarbutton { -moz-appearance: none !important; display: none !important; } thumb { - min-width: 10px !important; - -moz-appearance: none !important; - background-color: gray !important; - border: 1px solid gray !important; - -moz-border-radius: 4px !important; + background-color: rgba(192, 192, 192, 0.75) !important; + -moz-border-top-colors: none !important; + -moz-border-bottom-colors: none !important; + -moz-border-right-colors: none !important; + -moz-border-left-colors: none !important; + border: 1px solid rgb(192, 192, 192) !important; } select:not([size]) > scrollbar, select[size="1"] > scrollbar, select:not([size]) scrollbarbutton, select[size="1"] scrollbarbutton { display:block !important; }