fix logbook scrolling focus

This commit is contained in:
Alexander Sellite 2026-08-25 00:11:47 -04:00
parent 968fbe2421
commit da7f072365
2 changed files with 3 additions and 27 deletions

View file

@ -103,6 +103,9 @@ func _validate_page() -> void:
assert((page.get("_catalog_grid") as GridContainer).columns == 4) assert((page.get("_catalog_grid") as GridContainer).columns == 4)
var catalog_scroll := page.get("_catalog_scroll") as ScrollContainer var catalog_scroll := page.get("_catalog_scroll") as ScrollContainer
assert(catalog_scroll != null and catalog_scroll.follow_focus) assert(catalog_scroll != null and catalog_scroll.follow_focus)
catalog_scroll.scroll_vertical = 37
await create_timer(0.2).timeout
assert(catalog_scroll.scroll_vertical == 37)
page.call( page.call(
"_set_controller_zone", "_set_controller_zone",
LogbookPage.ControllerZone.ENTRIES, LogbookPage.ControllerZone.ENTRIES,

View file

@ -56,7 +56,6 @@ const COMPACT_BOOK_TOP: float = 65.0
const CATALOG_PORTRAIT_SIZE := Vector2(78.0, 36.0) const CATALOG_PORTRAIT_SIZE := Vector2(78.0, 36.0)
const CATALOG_ENTRY_SIZE := Vector2(92.0, 92.0) const CATALOG_ENTRY_SIZE := Vector2(92.0, 92.0)
const CATALOG_ROW_STEP: float = 98.0 const CATALOG_ROW_STEP: float = 98.0
const CATALOG_SNAP_DELAY: float = 0.12
const DETAIL_PORTRAIT_SIZE := Vector2(160.0, 88.0) const DETAIL_PORTRAIT_SIZE := Vector2(160.0, 88.0)
const DETAIL_SECTION_SEPARATION: int = 10 const DETAIL_SECTION_SEPARATION: int = 10
const DETAIL_QUALITY_SECTION_SIZE := Vector2(300.0, 104.0) const DETAIL_QUALITY_SECTION_SIZE := Vector2(300.0, 104.0)
@ -86,8 +85,6 @@ var _detail_tween: Tween
var _category_generation: int = 0 var _category_generation: int = 0
var _category_tween: Tween var _category_tween: Tween
var _silhouette_material: ShaderMaterial var _silhouette_material: ShaderMaterial
var _snapping_catalog_scroll: bool = false
var _catalog_scroll_snap_timer: Timer
var _outer_margin: MarginContainer var _outer_margin: MarginContainer
var _book: Control var _book: Control
var _compact_presentation: bool = false var _compact_presentation: bool = false
@ -475,11 +472,6 @@ func _center_scaled_content(control: Control) -> void:
func _configure_catalog_scroll_bar() -> void: func _configure_catalog_scroll_bar() -> void:
_catalog_scroll_snap_timer = Timer.new()
_catalog_scroll_snap_timer.one_shot = true
_catalog_scroll_snap_timer.wait_time = CATALOG_SNAP_DELAY
_catalog_scroll_snap_timer.timeout.connect(_snap_catalog_scroll_to_row)
_catalog_scroll.add_child(_catalog_scroll_snap_timer)
var scroll_bar: VScrollBar = _catalog_scroll.get_v_scroll_bar() var scroll_bar: VScrollBar = _catalog_scroll.get_v_scroll_bar()
scroll_bar.mouse_filter = Control.MOUSE_FILTER_IGNORE scroll_bar.mouse_filter = Control.MOUSE_FILTER_IGNORE
scroll_bar.focus_mode = Control.FOCUS_NONE scroll_bar.focus_mode = Control.FOCUS_NONE
@ -525,25 +517,6 @@ func _make_scroll_indicator(
func _on_catalog_scroll_value_changed(_value: float) -> void: func _on_catalog_scroll_value_changed(_value: float) -> void:
if _snapping_catalog_scroll:
return
_catalog_scroll_snap_timer.start()
_refresh_catalog_scroll_indicators()
func _snap_catalog_scroll_to_row() -> void:
var scroll_bar: VScrollBar = _catalog_scroll.get_v_scroll_bar()
var value: float = scroll_bar.value
var maximum_scroll: float = scroll_bar.max_value - scroll_bar.page
var snapped_value: float = clampf(
roundf(value / CATALOG_ROW_STEP) * CATALOG_ROW_STEP,
scroll_bar.min_value,
maximum_scroll,
)
if not is_equal_approx(value, snapped_value):
_snapping_catalog_scroll = true
_catalog_scroll.scroll_vertical = roundi(snapped_value)
_snapping_catalog_scroll = false
_refresh_catalog_scroll_indicators() _refresh_catalog_scroll_indicators()