Implement scrolling support for SuiScroller

This commit is contained in:
JeremyStar™ 2024-05-08 22:13:44 +02:00
parent 52a8960aa1
commit 1d6ae67c43
Signed by: JeremyStarTM
GPG key ID: E366BAEF67E4704D
3 changed files with 45 additions and 0 deletions

View file

@ -22,6 +22,9 @@ offset_top = 226.417
offset_right = 366.417
offset_bottom = 246.667
theme = ExtResource("2_4lteo")
max_value = 386.667
step = 1.0
page = 1.0
[node name="VScrollBar" type="VScrollBar" parent="."]
modulate = Color(1, 1, 1, 0.501961)
@ -33,3 +36,6 @@ offset_left = -20.25
offset_bottom = 226.417
grow_horizontal = 0
theme = ExtResource("2_4lteo")
max_value = 246.667
step = 1.0
page = 1.0

View file

@ -149,6 +149,39 @@ func update_element() -> void:
$HScrollBar.max_value = size.x
$VScrollBar.max_value = size.y
func scroll(direction: SuiTypes.ScrollDirection) -> void:
var bar: ScrollBar
var dsign: int = 0
# Set 'dsign'
match(direction):
SuiTypes.ScrollDirection.UP: dsign = +1
SuiTypes.ScrollDirection.DOWN: dsign = -1
SuiTypes.ScrollDirection.LEFT: dsign = -1
SuiTypes.ScrollDirection.RIGHT: dsign = +1
# Set 'bar'
match(direction):
SuiTypes.ScrollDirection.UP: bar = $VScrollBar
SuiTypes.ScrollDirection.DOWN: bar = $VScrollBar
SuiTypes.ScrollDirection.LEFT: bar = $HScrollBar
SuiTypes.ScrollDirection.RIGHT: bar = $HScrollBar
bar.value = bar.value + bar.step * 50 * dsign
func _input(event: InputEvent):
if event is InputEventMouseButton:
if event.is_pressed():
match(event.button_index):
MouseButton.MOUSE_BUTTON_WHEEL_UP:
if Input.is_key_pressed(Key.KEY_SHIFT): scroll(SuiTypes.ScrollDirection.LEFT)
else: scroll(SuiTypes.ScrollDirection.DOWN)
MouseButton.MOUSE_BUTTON_WHEEL_DOWN:
if Input.is_key_pressed(Key.KEY_SHIFT): scroll(SuiTypes.ScrollDirection.RIGHT)
else: scroll(SuiTypes.ScrollDirection.UP)
MouseButton.MOUSE_BUTTON_WHEEL_LEFT: scroll(SuiTypes.ScrollDirection.RIGHT)
MouseButton.MOUSE_BUTTON_WHEEL_RIGHT: scroll(SuiTypes.ScrollDirection.LEFT)
func _get_configuration_warnings():
if get_child_count() != 3:
return ["SuiScroller is intended to operate with one child only."]

View file

@ -11,3 +11,9 @@ enum ScrollMode {
MULTIPLY_CUSTOM_VALUE,
CUSTOM_VALUE
}
enum ScrollDirection {
UP,
DOWN,
LEFT,
RIGHT
}