31 lines
1.2 KiB
GDScript
31 lines
1.2 KiB
GDScript
extends PanelContainer
|
|
|
|
var accent := Color("91dbea")
|
|
|
|
func _ready() -> void:
|
|
mouse_filter = Control.MOUSE_FILTER_IGNORE
|
|
z_index = 1
|
|
resized.connect(queue_redraw)
|
|
minimum_size_changed.connect(func() -> void: _fit_popup.call_deferred())
|
|
_fit_popup.call_deferred()
|
|
|
|
func _fit_popup() -> void:
|
|
reset_size()
|
|
var shell := get_parent()
|
|
if shell is Control and shell.get_parent() is Window:
|
|
shell.reset_size()
|
|
shell = shell.get_parent()
|
|
if shell is Window:
|
|
# The engine popup otherwise retains its first, unwrapped text height.
|
|
shell.size = Vector2i(get_combined_minimum_size().ceil()) + Vector2i(4, 4)
|
|
|
|
func _draw() -> void:
|
|
# Crisp etched corner brackets and a top accent; no blurred shadow.
|
|
var inset := 5.0
|
|
var length := 12.0
|
|
for corner in [Vector2(inset, inset), Vector2(size.x - inset, inset), Vector2(inset, size.y - inset), Vector2(size.x - inset, size.y - inset)]:
|
|
var inward := Vector2(1 if corner.x < size.x * 0.5 else -1, 1 if corner.y < size.y * 0.5 else -1)
|
|
draw_line(corner, corner + Vector2(inward.x * length, 0), accent, 1.5, true)
|
|
draw_line(corner, corner + Vector2(0, inward.y * length), accent, 1.5, true)
|
|
draw_line(Vector2(22, 1), Vector2(minf(size.x - 22, 112), 1), accent, 2, true)
|