|
24 | 24 | getDoubleClickMaxDelay, setDoubleClickMaxDelay |
25 | 25 | getFilter, setFilter |
26 | 26 | getFont, setFont |
| 27 | + getMaxHistory, setMaxHistory |
27 | 28 | getMouseScrollSpeed, getMouseScrollSpeedX, getMouseScrollSpeedY, setMouseScrollSpeed, setMouseScrollSpeedX, setMouseScrollSpeedY |
28 | 29 | getType, setType, isPassword, isMultiline |
| 30 | + getWheelScrollSpeed, getWheelScrollSpeedX, getWheelScrollSpeedY, setWheelScrollSpeed, setWheelScrollSpeedX, setWheelScrollSpeedY |
29 | 31 | isEditable, setEditable |
30 | 32 | isFontFilteringActive, setFontFilteringActive |
31 | 33 |
|
32 | 34 | -- Events: |
33 | 35 | update |
34 | | - mousepressed, mousemoved, mousereleased |
| 36 | + mousepressed, mousemoved, mousereleased, wheelmoved |
35 | 37 | keypressed, textinput |
36 | 38 |
|
37 | 39 | -- Other: |
|
42 | 44 | getCursor, setCursor, moveCursor, getCursorSelectionSide, getAnchorSelectionSide |
43 | 45 | getCursorLayout |
44 | 46 | getInfoAtCoords |
45 | | - getMaxHistory, setMaxHistory |
46 | 47 | getScroll, getScrollX, getScrollY, setScroll, setScrollX, setScrollY, scroll, scrollToCursor |
47 | 48 | getScrollHandles, getScrollHandleHorizontal, getScrollHandleVertical |
48 | 49 | getScrollLimits |
|
108 | 109 | function love.mousereleased(mx, my, mbutton) |
109 | 110 | field:mousereleased(mx-fieldX, my-fieldY, mbutton) |
110 | 111 | end |
| 112 | + function love.wheelmoved(dx, dy) |
| 113 | + field:wheelmoved(dx, dy) |
| 114 | + end |
111 | 115 |
|
112 | 116 | function love.draw() |
113 | 117 | love.graphics.setColor(0, 0, 1) |
@@ -747,6 +751,9 @@ local function newInputField(text, fieldType) |
747 | 751 | mouseScrollSpeedX = 6.0, -- Per pixel per second. |
748 | 752 | mouseScrollSpeedY = 8.0, |
749 | 753 |
|
| 754 | + wheelScrollSpeedX = 1.0, -- Per second. Relative to the font size. |
| 755 | + wheelScrollSpeedY = 1.0, |
| 756 | + |
750 | 757 | dragMode = "", -- "" | "character" | "word" | "line" |
751 | 758 | dragStartPosition1 = 0, |
752 | 759 | dragStartPosition2 = 0, |
@@ -954,10 +961,11 @@ function InputField.getMouseScrollSpeedY(field) |
954 | 961 | return field.mouseScrollSpeedY |
955 | 962 | end |
956 | 963 |
|
957 | | --- field:setMouseScrollSpeed( speedX, speedY ) |
| 964 | +-- field:setMouseScrollSpeed( speedX [, speedY=speedX ] ) |
958 | 965 | -- field:setMouseScrollSpeedX( speedX ) |
959 | 966 | -- field:setMouseScrollSpeedY( speedY ) |
960 | 967 | function InputField.setMouseScrollSpeed(field, speedX, speedY) |
| 968 | + speedY = speedY or speedX |
961 | 969 | field.mouseScrollSpeedX = math.max(speedX, 0) |
962 | 970 | field.mouseScrollSpeedY = math.max(speedY, 0) |
963 | 971 | end |
|
970 | 978 |
|
971 | 979 |
|
972 | 980 |
|
| 981 | +-- speedX, speedY = field:getWheelScrollSpeed( ) |
| 982 | +-- speedX = field:getWheelScrollSpeedX( ) |
| 983 | +-- speedY = field:getWheelScrollSpeedY( ) |
| 984 | +function InputField.getWheelScrollSpeed(field) |
| 985 | + return field.wheelScrollSpeedX, field.wheelScrollSpeedY |
| 986 | +end |
| 987 | +function InputField.getWheelScrollSpeedX(field) |
| 988 | + return field.wheelScrollSpeedX |
| 989 | +end |
| 990 | +function InputField.getWheelScrollSpeedY(field) |
| 991 | + return field.wheelScrollSpeedY |
| 992 | +end |
| 993 | + |
| 994 | +-- field:setWheelScrollSpeed( speedX [, speedY=speedX ] ) |
| 995 | +-- field:setWheelScrollSpeedX( speedX ) |
| 996 | +-- field:setWheelScrollSpeedY( speedY ) |
| 997 | +function InputField.setWheelScrollSpeed(field, speedX, speedY) |
| 998 | + speedY = speedY or speedX |
| 999 | + field.wheelScrollSpeedX = math.max(speedX, 0) |
| 1000 | + field.wheelScrollSpeedY = math.max(speedY, 0) |
| 1001 | +end |
| 1002 | +function InputField.setWheelScrollSpeedX(field, speedX) |
| 1003 | + field.wheelScrollSpeedX = math.max(speedX, 0) |
| 1004 | +end |
| 1005 | +function InputField.setWheelScrollSpeedY(field, speedY) |
| 1006 | + field.wheelScrollSpeedY = math.max(speedY, 0) |
| 1007 | +end |
| 1008 | + |
| 1009 | + |
| 1010 | + |
973 | 1011 | -- delay = field:getDoubleClickMaxDelay( ) |
974 | 1012 | function InputField.getDoubleClickMaxDelay(field) |
975 | 1013 | return field.multiClickMaxDelay |
@@ -1620,6 +1658,21 @@ function InputField.mousereleased(field, mx, my, mbutton) |
1620 | 1658 | return true |
1621 | 1659 | end |
1622 | 1660 |
|
| 1661 | +-- eventWasHandled = field:wheelmoved( deltaX, deltaY ) |
| 1662 | +function InputField.wheelmoved(field, dx, dy) |
| 1663 | + if LK.isDown("lshift","rshift") then |
| 1664 | + dx, dy = dy, dx |
| 1665 | + end |
| 1666 | + |
| 1667 | + local fontH = field.font:getHeight() |
| 1668 | + field:scroll( |
| 1669 | + -dx * field.wheelScrollSpeedX*fontH, |
| 1670 | + -dy * field.wheelScrollSpeedY*fontH |
| 1671 | + ) |
| 1672 | + |
| 1673 | + return true -- Always handle event (for now). |
| 1674 | +end |
| 1675 | + |
1623 | 1676 |
|
1624 | 1677 |
|
1625 | 1678 | -- field:releaseMouse( ) |
|
0 commit comments