Слияние с внешними исправлениями.
This commit is contained in:
@@ -31,8 +31,16 @@ var ScnSelector: PackedScene ## Прототип индикатора вы
|
||||
var selector_color_proc: Callable ## Ссылка на процедуру генератора цвета индикатора выбранного ряда
|
||||
var selector_size_proc: Callable ## Ссылка на процедуру генератора размера индикатора выбранного ряда
|
||||
|
||||
signal row_pressed(i_row: int) ## Вызывается при нажатии кнопкой мыши на строку
|
||||
signal selected_changed(i_row: int) ## Вызывается при изменении выбранного ряда. i_row - текущий выбранный ряд
|
||||
## Вызывается при нажатии кнопкой мыши на строку.
|
||||
## Активируемый ползователем элемент ряда должен вызывать
|
||||
## сигнал [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)
|
||||
|
||||
var scroll: Control
|
||||
var scroll_adj: = Vector2(0, 0)
|
||||
@@ -299,14 +307,18 @@ 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 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]
|
||||
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]
|
||||
node.remove_child(selector)
|
||||
selector.queue_free()
|
||||
nodes.erase(key)
|
||||
elif (not nodes.has(key)) and selected:
|
||||
nodes.erase(selector_key)
|
||||
elif (not nodes.has(selector_key)) and selected:
|
||||
var selector = ScnSelector.instantiate()
|
||||
var rect: = [0, 0, 0, 0]
|
||||
selector_size_proc.call(i_row, rect)
|
||||
@@ -314,7 +326,8 @@ 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[key] = selector
|
||||
nodes[selector_key] = selector
|
||||
var node = nodes[node_key]
|
||||
node.add_child(selector)
|
||||
|
||||
|
||||
@@ -473,10 +486,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])
|
||||
@@ -587,7 +600,8 @@ func set_row_editable(i_row: int, val: bool) -> void:
|
||||
nodes[key].editable = val
|
||||
|
||||
|
||||
## [param i_col] - Индекс колонки. [param i_row] - Индекс ряда.
|
||||
## [param i_col] - Индекс колонки.[br]
|
||||
## [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]:
|
||||
|
||||
Reference in New Issue
Block a user