Files
GGJ26/addons/resources_spreadsheet_view/main_screen/frozen_columns.gd
minimata 158e18f1fe
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 8s
Create tag and build when new code gets to main / Export (push) Successful in 1m13s
Added resource table plugin
2026-01-31 10:23:20 +01:00

61 lines
1.9 KiB
GDScript

@tool
extends ColorRect
const TablesPluginSettingsClass := preload("res://addons/resources_spreadsheet_view/settings_grid.gd")
@onready var editor_view : Control = $"../../../../../.."
@onready var grid_scroll : ScrollContainer = $"../../Scroll"
@onready var grid : Container = $"../../Scroll/MarginContainer/TableGrid"
var children : Array[Control] = []
var children_copy_cells : Array[Control] = []
func _ready() -> void:
grid_scroll.get_h_scroll_bar().value_changed.connect(_on_scroll_updated, CONNECT_DEFERRED)
grid_scroll.get_v_scroll_bar().value_changed.connect(_on_scroll_updated, CONNECT_DEFERRED)
func _on_grid_updated() -> void:
if editor_view.rows.size() == 0:
hide()
return
visible = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "freeze_first_column")
for x in get_children():
x.queue_free()
children.clear()
children_copy_cells.clear()
size.x = 0.0
await get_tree().process_frame
var first_visible_column := 0
for i in editor_view.columns.size():
if grid.get_child(i).visible:
first_visible_column = i
break
var total_column_count : int = editor_view.columns.size()
children.resize(grid.get_child_count() / total_column_count)
children_copy_cells.resize(children.size())
for i in children.size():
children_copy_cells[i] = grid.get_child(total_column_count * i + first_visible_column)
children[i] = children_copy_cells[i].duplicate()
children[i].mouse_filter = Control.MOUSE_FILTER_IGNORE
add_child(children[i])
size.x = maxf(size.x, children_copy_cells[i].size.x)
size.y = grid.size.y
color = get_theme_color(&"background", &"Editor")
color.a *= 0.9
_on_scroll_updated(0.0)
func _on_scroll_updated(_new_value : float):
position = Vector2(0.0, -grid_scroll.scroll_vertical)
for i in children.size():
children[i].size = children_copy_cells[i].size
children[i].position = children_copy_cells[i].position