boolean (Rectangle bounds) { if (bounds.x == -bounds.width || bounds.x == getWidth()) { if (bounds.y + bounds.height + bounds.y == getHeight()) { // Horizontal auto-scrolling: // /--- or ---\ // y y // /-width-! !-width-\ // ! ! ! ! // h ! ! h // e ! ! e // i ! ! i // g ! ! g // h ! ! h // t ! ! t // ! ! ! ! // \-------! !-------/ // y y // \--- or ---/ return true; } } if (bounds.y == -bounds.height || bounds.y == getHeight()) { if (bounds.x + bounds.width + bounds.x == getWidth()) { // Vertical auto-scrolling is symmetric to horizontal one return true; } } return false; }