mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-01-18 17:19:50 +00:00
943e20a0de
When the user clicked on a layer container to change its name and then clicked away, the program crashed. This was because the name of the layer was changed (`Global.layers[i][0] = new_name`), and Global.layers_changed() was being called, which removed all of the layer container UI and re-created it. This is unneeded to happen when only the layer name changes, so I added a boolean to skip the execution of the method. Oddly enough, the crash was not happening on Windows (at least on my end) and it was working as expected. Godot's output terminal was not showing any error messages, either.
73 lines
3.1 KiB
GDScript
73 lines
3.1 KiB
GDScript
class_name LayerContainer
|
|
extends Button
|
|
|
|
var i := 0
|
|
var visibility_button : BaseButton
|
|
var lock_button : BaseButton
|
|
var linked_button : BaseButton
|
|
var label : Label
|
|
var line_edit : LineEdit
|
|
|
|
func _ready() -> void:
|
|
visibility_button = Global.find_node_by_name(self, "VisibilityButton")
|
|
lock_button = Global.find_node_by_name(self, "LockButton")
|
|
linked_button = Global.find_node_by_name(self, "LinkButton")
|
|
label = Global.find_node_by_name(self, "Label")
|
|
line_edit = Global.find_node_by_name(self, "LineEdit")
|
|
|
|
if Global.layers[i][1]:
|
|
visibility_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Layer_Visible.png" % Global.theme_type)
|
|
visibility_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Layer_Visible_Hover.png" % Global.theme_type)
|
|
else:
|
|
visibility_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Layer_Invisible.png" % Global.theme_type)
|
|
visibility_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Layer_Invisible_Hover.png" % Global.theme_type)
|
|
|
|
if Global.layers[i][2]:
|
|
lock_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Lock.png" % Global.theme_type)
|
|
lock_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Lock_Hover.png" % Global.theme_type)
|
|
else:
|
|
lock_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Unlock.png" % Global.theme_type)
|
|
lock_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Unlock_Hover.png" % Global.theme_type)
|
|
|
|
if Global.layers[i][4]: # If new layers will be linked
|
|
linked_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Linked_Layer.png" % Global.theme_type)
|
|
linked_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Linked_Layer_Hover.png" % Global.theme_type)
|
|
else:
|
|
linked_button.texture_normal = load("res://Assets/Graphics/%s Themes/Layers/Unlinked_Layer.png" % Global.theme_type)
|
|
linked_button.texture_hover = load("res://Assets/Graphics/%s Themes/Layers/Unlinked_Layer_Hover.png" % Global.theme_type)
|
|
|
|
func _input(event : InputEvent) -> void:
|
|
if (event.is_action_released("ui_accept") or event.is_action_released("ui_cancel")) and line_edit.visible and event.scancode != KEY_SPACE:
|
|
save_layer_name(line_edit.text)
|
|
|
|
func _on_LayerContainer_pressed() -> void:
|
|
pressed = !pressed
|
|
label.visible = false
|
|
line_edit.visible = true
|
|
line_edit.editable = true
|
|
line_edit.grab_focus()
|
|
|
|
func _on_LineEdit_focus_exited() -> void:
|
|
save_layer_name(line_edit.text)
|
|
|
|
func save_layer_name(new_name : String) -> void:
|
|
label.visible = true
|
|
line_edit.visible = false
|
|
line_edit.editable = false
|
|
label.text = new_name
|
|
Global.layers_changed_skip = true
|
|
Global.layers[i][0] = new_name
|
|
|
|
func _on_VisibilityButton_pressed() -> void:
|
|
Global.layers[i][1] = !Global.layers[i][1]
|
|
Global.canvas.update()
|
|
|
|
func _on_LockButton_pressed() -> void:
|
|
Global.layers[i][2] = !Global.layers[i][2]
|
|
|
|
func _on_LinkButton_pressed() -> void:
|
|
Global.layers[i][4] = !Global.layers[i][4]
|
|
if Global.layers[i][4] && !Global.layers[i][5]:
|
|
Global.layers[i][5].append(Global.canvas)
|
|
Global.layers[i][3].get_child(Global.current_frame)._ready()
|