docs: function(didMouseMove) {
              if (didMouseMove) {
                  // Is the mouse up against one of the window edges?
                  this.drag._scrollProperty = null;
  
                  if (this.settings.axis !== Garnish.X_AXIS) {
                      // Scrolling up?
                      this.drag._winScrollTop = Garnish.$win.scrollTop();
                      this.drag._minMouseScrollY = this.drag._winScrollTop + Garnish.BaseDrag.windowScrollTargetSize;
  
                      if (this.mouseY < this.drag._minMouseScrollY) {
                          this.drag._scrollProperty = 'scrollTop';
                          this.drag._scrollAxis = 'Y';
                          this.drag._scrollDist = Math.round((this.mouseY - this.drag._minMouseScrollY) / 2);
                      }
                      else {
                          // Scrolling down?
                          this.drag._maxMouseScrollY = this.drag._winScrollTop + Garnish.$win.height() - Garnish.BaseDrag.windowScrollTargetSize;
  
                          if (this.mouseY > this.drag._maxMouseScrollY) {
                              this.drag._scrollProperty = 'scrollTop';
                              this.drag._scrollAxis = 'Y';
                              this.drag._scrollDist = Math.round((this.mouseY - this.drag._maxMouseScrollY) / 2);
                          }
                      }
                  }
  
                  if (!this.drag._scrollProperty && this.settings.axis !== Garnish.Y_AXIS) {
                      // Scrolling left?
                      this.drag._winScrollLeft = Garnish.$win.scrollLeft();
                      this.drag._minMouseScrollX = this.drag._winScrollLeft + Garnish.BaseDrag.windowScrollTargetSize;
  
                      if (this.mouseX < this.drag._minMouseScrollX) {
                          this.drag._scrollProperty = 'scrollLeft';
                          this.drag._scrollAxis = 'X';
                          this.drag._scrollDist = Math.round((this.mouseX - this.drag._minMouseScrollX) / 2);
                      }
                      else {
                          // Scrolling right?
                          this.drag._maxMouseScrollX = this.drag._winScrollLeft + Garnish.$win.width() - Garnish.BaseDrag.windowScrollTargetSize;
  
                          if (this.mouseX > this.drag._maxMouseScrollX) {
                              this.drag._scrollProperty = 'scrollLeft';
                              this.drag._scrollAxis = 'X';
                              this.drag._scrollDist = Math.round((this.mouseX - this.drag._maxMouseScrollX) / 2);
                          }
                      }
                  }
  
                  if (this.drag._scrollProperty) {
                      // Are we starting to scroll now?
                      if (!this.scrollProperty) {
                          if (!this.scrollProxy) {
                              this.scrollProxy = $.proxy(this, '_scrollWindow');
                          }
  
                          if (this.scrollFrame) {
                              Garnish.cancelAnimationFrame(this.scrollFrame);
                              this.scrollFrame = null;
                          }
  
                          this.scrollFrame = Garnish.requestAnimationFrame(this.scrollProxy);
                      }
  
                      this.scrollProperty = this.drag._scrollProperty;
                      this.scrollAxis = this.drag._scrollAxis;
                      this.scrollDist = this.drag._scrollDist;
                  }
                  else {
                      this._cancelWindowScroll();
                  }
              }
  
              this.onDrag();
          }