diff --git a/table/table.gd b/table/table.gd index add54ff4..b398155a 100644 --- a/table/table.gd +++ b/table/table.gd @@ -31,16 +31,8 @@ var ScnSelector: PackedScene ## Прототип индикатора вы var selector_color_proc: Callable ## Ссылка на процедуру генератора цвета индикатора выбранного ряда var selector_size_proc: Callable ## Ссылка на процедуру генератора размера индикатора выбранного ряда -## Вызывается при нажатии кнопкой мыши на строку. -## Активируемый ползователем элемент ряда должен вызывать -## сигнал [b]focus_entered[/b], что бы сигнал [b]row_pressed[/b] работал.[br] -## [param i_row] - Индекс ряда в котором пользователь активировал элемент.[br] -## [i]Godot 4.2: [/i][b] Label[/b] [i] - не вызывает сигнал[/i] [b]focus_entered[/b]. -signal row_pressed(i_row: int) - -## Вызывается при изменении выбранного ряда.[br] -## [param i_row] - Текущий выбранный ряд. -signal selected_changed(i_row: int) +signal row_pressed(i_row: int) ## Вызывается при нажатии кнопкой мыши на строку +signal selected_changed(i_row: int) ## Вызывается при изменении выбранного ряда. i_row - текущий выбранный ряд var scroll: Control var scroll_adj: = Vector2(0, 0) @@ -307,18 +299,14 @@ func set_row_selected(i_row: int, selected: bool = true) -> void: ## [param i_row] - Индекс ряда. func _set_row_selected(i_row: int, selected: bool = true) -> void: - var selector_key: = SELECTOR_KEY_FORMAT % [i_row, 0] - var node_key: = NODE_KEY_FORMAT % [i_row, 0] - if not nodes.has(node_key): - push_error('ошибка: нет такого ряда: %d' % i_row) - return - if nodes.has(selector_key) and (not selected): - var node = nodes[node_key] - var selector = nodes[selector_key] + var key: = SELECTOR_KEY_FORMAT % [i_row, 0] + var node = nodes[NODE_KEY_FORMAT % [i_row, 0]] + if nodes.has(key) and (not selected): + var selector = nodes[key] node.remove_child(selector) selector.queue_free() - nodes.erase(selector_key) - elif (not nodes.has(selector_key)) and selected: + nodes.erase(key) + elif (not nodes.has(key)) and selected: var selector = ScnSelector.instantiate() var rect: = [0, 0, 0, 0] selector_size_proc.call(i_row, rect) @@ -326,8 +314,7 @@ func _set_row_selected(i_row: int, selected: bool = true) -> void: selector.size.y = rect[3] selector.modulate = selector_color_proc.call(i_row) selector.z_index = z_index + 1 - nodes[selector_key] = selector - var node = nodes[node_key] + nodes[key] = selector node.add_child(selector) @@ -486,10 +473,10 @@ func rehash(): var iv = get_key_indexes(key) var i0 = Vector2(iv[0], iv[1]) if HEAD_PREFIX in key: - swap_nodes(nodes_copy, HEAD_KEY_FORMAT, i0, i_hdr[0]) + swap_nodes(nodes_copy, HEAD_KEY_FORMAT, i0, i_hdr[0]) next_index(i_hdr) elif NODE_PREFIX in key: - swap_nodes(nodes_copy, NODE_KEY_FORMAT, i0, i_node[0]) + swap_nodes(nodes_copy, NODE_KEY_FORMAT, i0, i_node[0]) next_index(i_node) elif SLCT_PREFIX in key: swap_nodes(nodes_copy, SELECTOR_KEY_FORMAT, i0, i_slct[0]) @@ -551,8 +538,7 @@ func set_nodes_min_size(i_row: int, sizes: Array, key_format: String = NODE_KEY_ node.set_deferred('size.x', sizes[i_col]) -## [param i_col] - Индекс колонки.[br] -## [param i_row] - Индекс ряда. +## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда. func set_node_text(i_col: int, i_row: int, val: String) -> void: var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row) nodes[key].text = val @@ -601,8 +587,7 @@ func set_row_editable(i_row: int, val: bool) -> void: nodes[key].editable = val -## [param i_col] - Индекс колонки.[br] -## [param i_row] - Индекс ряда. +## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда. func set_node_alligment(i_col: int, i_row: int, val: int) -> void: var key: = get_node_key(NODE_KEY_FORMAT, i_col, i_row) if 'horizontal_alignment' in nodes[key]: