aboutsummaryrefslogtreecommitdiff
path: root/option_set/option_set_list.gd
diff options
context:
space:
mode:
Diffstat (limited to 'option_set/option_set_list.gd')
-rw-r--r--option_set/option_set_list.gd31
1 files changed, 13 insertions, 18 deletions
diff --git a/option_set/option_set_list.gd b/option_set/option_set_list.gd
index 7a61161..6efd068 100644
--- a/option_set/option_set_list.gd
+++ b/option_set/option_set_list.gd
@@ -29,7 +29,7 @@ var selected_style : StyleBoxFlat
var border_size := 5
onready var font : Font = get_font("font")
-
+onready var screen_dpcm : float = float(OS.get_screen_dpi()) / 2.54
func _init():
self.anchor_right = 1.0
@@ -168,18 +168,17 @@ func _process(delta):
build_labels()
is_dirty = false
- var ratio := 1.0
-
+ var viewable_ratio := 1.0
+ var viewable_height := labels.rect_size.y
if items.size() > 0:
- ratio = v_scroll_bar.max_value / float(labels_end_positions.back())
+ viewable_ratio = viewable_height / float(labels_end_positions.back())
v_scroll_bar.min_value = 0
- v_scroll_bar.max_value = labels.rect_size.y
- v_scroll_bar.visible = ratio < 1.0
- v_scroll_bar.page = ratio * (v_scroll_bar.max_value - v_scroll_bar.min_value)
+ v_scroll_bar.max_value = viewable_height / viewable_ratio
+ v_scroll_bar.visible = viewable_ratio < 1.0
+ v_scroll_bar.page = viewable_height
- var scrollbar_offset := v_scroll_bar.value
- var labels_offset := scrollbar_offset / ratio
+ var labels_offset := v_scroll_bar.value
var idx_offset := labels_end_positions.bsearch(labels_offset)
var idx := idx_offset
@@ -201,7 +200,9 @@ func _process(delta):
idx += 1
- labels.margin_right = - v_scroll_bar.rect_size.x if v_scroll_bar.visible else 0.0
+ var right_margin = - v_scroll_bar.rect_size.x if v_scroll_bar.visible else 0.0
+ labels.margin_right = right_margin
+ sensor.margin_right = right_margin
# Apply drag movement inertia.
if is_pointer_dragging == false && abs(pointer_drag_velocity) > 0.5:
@@ -212,14 +213,8 @@ func _process(delta):
func get_item_at_position(mouse_position: Vector2) -> int:
if items.size() == 0:
return -1
-
- var ratio := 1.0
-
- if items.size() > 0:
- ratio = v_scroll_bar.max_value / float(labels_end_positions.back())
- var scrollbar_offset := v_scroll_bar.value
- var labels_offset := scrollbar_offset / ratio
+ var labels_offset := v_scroll_bar.value
var position := mouse_position.y + labels_offset
var item_idx := labels_end_positions.bsearch(position)
@@ -270,6 +265,6 @@ func pointer_input_on_click_handler(pointer: PointerInputSensor.PointerInputData
func pointer_input_on_scroll_handler(pointer: PointerInputSensor.PointerInputData):
- pointer_drag_velocity -= pointer.scroll * POINTER_VELOCITY_BOOST_FACTOR * float(OS.get_screen_dpi()) / 2.54
+ pointer_drag_velocity -= pointer.scroll * POINTER_VELOCITY_BOOST_FACTOR * screen_dpcm