MCPcopy Create free account
hub / github.com/codenameone/CodenameOne / pointerSelect

Method pointerSelect

CodenameOne/src/com/codename1/ui/List.java:1882–1956  ·  view source on GitHub ↗
(int x, int y)

Source from the content-addressed store, hash-verified

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 }

Callers 6

paintMethod · 0.95
longPointerPressMethod · 0.95
pointerPressedMethod · 0.95
pointerDraggedImplMethod · 0.95
pointerReleasedImplMethod · 0.95
isTactileTouchMethod · 0.95

Calls 15

getModelMethod · 0.95
getElementSizeMethod · 0.95
getHorizontalPaddingMethod · 0.95
getSideGapMethod · 0.95
isScrollableXMethod · 0.95
maxMethod · 0.95
getSelectedIndexMethod · 0.95
getYMethod · 0.95
getPaddingTopMethod · 0.95
getHeightMethod · 0.95
getXMethod · 0.95

Tested by

no test coverage detected