(int x, int y)
| 1880 | } |
| 1881 | |
| 1882 | private int pointerSelect(int x, int y) { |
| 1883 | int selectedIndex = -1; |
| 1884 | int numOfcomponents = getModel().getSize(); |
| 1885 | Style style = getStyle(); |
| 1886 | |
| 1887 | Dimension rendererSize = getElementSize(false, true); |
| 1888 | Dimension selectedSize = getElementSize(true, true); |
| 1889 | |
| 1890 | Rectangle pos = new Rectangle(); |
| 1891 | int width = getWidth() - style.getHorizontalPadding() - getSideGap(); |
| 1892 | if (isScrollableX()) { |
| 1893 | width = Math.max(width, getScrollDimension().getWidth() - style.getHorizontalPadding() - getSideGap()); |
| 1894 | } |
| 1895 | y = y - getAbsoluteY(); |
| 1896 | x = x - getAbsoluteX(); |
| 1897 | |
| 1898 | if (fixedSelection < FIXED_NONE_BOUNDRY) { |
| 1899 | calculateComponentPosition(getSelectedIndex(), width, pos, rendererSize, getElementSize(true, true), true); |
| 1900 | |
| 1901 | if (orientation != HORIZONTAL) { |
| 1902 | if (y < pos.getY()) { |
| 1903 | selectedIndex = (y - style.getPaddingTop()) / (rendererSize.getHeight() + itemGap); |
| 1904 | } else { |
| 1905 | int current = getSelectedIndex(); |
| 1906 | if (y < pos.getY() + selectedSize.getHeight()) { |
| 1907 | selectedIndex = current; |
| 1908 | } else { |
| 1909 | selectedIndex = (current + 1) + (y - (pos.getY() + selectedSize.getHeight())) / (rendererSize.getHeight() + itemGap); |
| 1910 | } |
| 1911 | } |
| 1912 | } else { |
| 1913 | if (isRTL()) { |
| 1914 | if (x > pos.getX() + selectedSize.getWidth()) { |
| 1915 | int delta = x - (pos.getX() + selectedSize.getWidth()); |
| 1916 | delta /= (rendererSize.getWidth() + itemGap); |
| 1917 | |
| 1918 | // should have been -1-delta, but works better like this. |
| 1919 | selectedIndex = getSelectedIndex() - 1 - delta; |
| 1920 | } else { |
| 1921 | if (x >= pos.getX()) { |
| 1922 | selectedIndex = getSelectedIndex(); |
| 1923 | } else { |
| 1924 | int delta = pos.getX() - x; |
| 1925 | delta /= (rendererSize.getWidth() + itemGap); |
| 1926 | selectedIndex = getSelectedIndex() + 1 + delta; |
| 1927 | } |
| 1928 | } |
| 1929 | } else { |
| 1930 | if (x < pos.getX()) { |
| 1931 | selectedIndex = (x - style.getPaddingLeftNoRTL()) / (rendererSize.getWidth() + itemGap); |
| 1932 | } else { |
| 1933 | int current = getSelectedIndex(); |
| 1934 | if (x < pos.getX() + selectedSize.getWidth()) { |
| 1935 | selectedIndex = current; |
| 1936 | } else { |
| 1937 | selectedIndex = (current + 1) + (x - (pos.getX() + selectedSize.getWidth())) / (rendererSize.getWidth() + itemGap); |
| 1938 | } |
| 1939 | } |
no test coverage detected