Откат изменений
This commit is contained in:
@@ -119,13 +119,9 @@ func on_interfer_new(ecm, table_index):
|
|||||||
$table.set_row_editable(i_row, false)
|
$table.set_row_editable(i_row, false)
|
||||||
$table.set_node_user_data(0, i_row, ecm)
|
$table.set_node_user_data(0, i_row, ecm)
|
||||||
table_index[ecm.ispp] = i_row
|
table_index[ecm.ispp] = i_row
|
||||||
$table.cleanup_invalid_selectors()
|
|
||||||
# Будем надеяться, что отложенные вызовы производятся в том же порядке
|
# Будем надеяться, что отложенные вызовы производятся в том же порядке
|
||||||
var selected_rows = []
|
$table.call_deferred('clear_rows_selected')
|
||||||
$table.get_selected_rows(selected_rows)
|
$table.call_deferred('set_row_selected', i_row, true)
|
||||||
for old_row in selected_rows:
|
|
||||||
$table.set_row_selected(old_row, false)
|
|
||||||
$table.set_row_selected(i_row, true)
|
|
||||||
if not interfer.auto_enabled:
|
if not interfer.auto_enabled:
|
||||||
signaller.emit_signal('interfer_selected', ecm)
|
signaller.emit_signal('interfer_selected', ecm)
|
||||||
|
|
||||||
|
|||||||
@@ -301,16 +301,6 @@ func default_selector_size_proc(i_row: int, rect: Array) -> void:
|
|||||||
rect[3] += node_gap.y
|
rect[3] += node_gap.y
|
||||||
|
|
||||||
|
|
||||||
## Очищает в словаре nodes от невалидных ссылок
|
|
||||||
func cleanup_invalid_selectors():
|
|
||||||
var keys_to_remove = []
|
|
||||||
for key in nodes:
|
|
||||||
if key.begins_with(SLCT_PREFIX) and not is_instance_valid(nodes[key]):
|
|
||||||
keys_to_remove.append(key)
|
|
||||||
for key in keys_to_remove:
|
|
||||||
nodes.erase(key)
|
|
||||||
print_debug("Удален невалидный селектор: ", key)
|
|
||||||
|
|
||||||
##
|
##
|
||||||
func clear_rows_selected():
|
func clear_rows_selected():
|
||||||
var rows_count: = get_rows_count()
|
var rows_count: = get_rows_count()
|
||||||
@@ -333,6 +323,7 @@ func _set_row_selected(i_row: int, selected: bool = true) -> void:
|
|||||||
return
|
return
|
||||||
if nodes.has(selector_key) and (not selected):
|
if nodes.has(selector_key) and (not selected):
|
||||||
var selector = nodes[selector_key]
|
var selector = nodes[selector_key]
|
||||||
|
nodes.erase(selector_key)
|
||||||
if is_instance_valid(selector):
|
if is_instance_valid(selector):
|
||||||
var prnt = selector.get_parent_control()
|
var prnt = selector.get_parent_control()
|
||||||
if prnt:
|
if prnt:
|
||||||
@@ -340,7 +331,6 @@ func _set_row_selected(i_row: int, selected: bool = true) -> void:
|
|||||||
selector.queue_free()
|
selector.queue_free()
|
||||||
else:
|
else:
|
||||||
push_warning('обращение к удалённому элементу \"%s\"' % selector_key)
|
push_warning('обращение к удалённому элементу \"%s\"' % selector_key)
|
||||||
nodes.erase(selector_key)
|
|
||||||
elif (not nodes.has(selector_key)) and selected:
|
elif (not nodes.has(selector_key)) and selected:
|
||||||
var selector = ScnSelector.instantiate()
|
var selector = ScnSelector.instantiate()
|
||||||
var rect: = [0, 0, 0, 0]
|
var rect: = [0, 0, 0, 0]
|
||||||
@@ -459,7 +449,6 @@ func remove_row(i_row: int):
|
|||||||
|
|
||||||
if nodes.has(sel_key):
|
if nodes.has(sel_key):
|
||||||
var selector = nodes[sel_key]
|
var selector = nodes[sel_key]
|
||||||
if selector == null: return
|
|
||||||
var prnt = selector.get_parent()
|
var prnt = selector.get_parent()
|
||||||
prnt.remove_child(selector)
|
prnt.remove_child(selector)
|
||||||
selector.queue_free()
|
selector.queue_free()
|
||||||
@@ -496,11 +485,8 @@ func next_index(indexes: Array) -> void:
|
|||||||
func swap_nodes(nodes_copy, node_key_format, i0, i1) -> void:
|
func swap_nodes(nodes_copy, node_key_format, i0, i1) -> void:
|
||||||
var key0 = node_key_format % [i0.y, i0.x]
|
var key0 = node_key_format % [i0.y, i0.x]
|
||||||
var key1 = node_key_format % [i1.y, i1.x]
|
var key1 = node_key_format % [i1.y, i1.x]
|
||||||
if is_instance_valid(nodes[key0]):
|
nodes_copy[key1] = nodes[key0]
|
||||||
nodes_copy[key1] = nodes[key0]
|
nodes_copy[key1].name = key1
|
||||||
nodes_copy[key1].name = key1
|
|
||||||
else:
|
|
||||||
print_debug("Ошибка: нод ", key0, " был освобожден")
|
|
||||||
|
|
||||||
|
|
||||||
## Переназначает ключи в соответствии с размерами таблицы.
|
## Переназначает ключи в соответствии с размерами таблицы.
|
||||||
|
|||||||
Reference in New Issue
Block a user