mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-02-24 14:33:14 +00:00
54 lines
1.7 KiB
GDScript
54 lines
1.7 KiB
GDScript
extends AcceptDialog
|
|
|
|
var main_canvas := Global.control.find_child("Main Canvas", true, false)
|
|
|
|
@onready var slider := $VBoxContainer/ValueSlider as ValueSlider
|
|
@onready var fullscreen_warning := $VBoxContainer/FullscreenWarning as Label
|
|
|
|
|
|
func _ready() -> void:
|
|
if main_canvas is FloatingWindow: # If it's shifted to a window then get the content.
|
|
main_canvas = main_canvas.window_content
|
|
await get_tree().process_frame
|
|
Global.control.main_ui.sort_children.connect(_recalculate_opacity)
|
|
|
|
|
|
func _on_WindowOpacityDialog_about_to_show() -> void:
|
|
var canvas_window = main_canvas.get_window()
|
|
canvas_window.transparent = true
|
|
canvas_window.transparent_bg = true
|
|
slider.editable = not is_fullscreen()
|
|
fullscreen_warning.visible = not slider.editable
|
|
|
|
|
|
func _recalculate_opacity() -> void:
|
|
set_window_opacity(slider.value)
|
|
|
|
|
|
func set_window_opacity(value: float) -> void:
|
|
if is_fullscreen():
|
|
value = 100.0
|
|
slider.value = value
|
|
value = value / 100.0
|
|
# Find the TabContainer that has the Main Canvas panel.
|
|
for container: Control in Global.control.main_ui._panel_container.get_children():
|
|
if container is TabContainer:
|
|
var center := container.get_rect().get_center()
|
|
if main_canvas.get_rect().has_point(center):
|
|
if main_canvas.get_window() != get_tree().root:
|
|
# In case we converted to window while trransparency was active.
|
|
container.self_modulate.a = 1.0
|
|
else:
|
|
container.self_modulate.a = value
|
|
Global.transparent_checker.update_transparency(value)
|
|
|
|
|
|
func _on_visibility_changed() -> void:
|
|
Global.dialog_open(false)
|
|
|
|
|
|
func is_fullscreen() -> bool:
|
|
return (
|
|
(get_parent().get_window().mode == Window.MODE_EXCLUSIVE_FULLSCREEN)
|
|
or (get_parent().get_window().mode == Window.MODE_FULLSCREEN)
|
|
)
|