Skip to content

Commit c92f254

Browse files
committed
Improve ControlBlock background drawing
Instead of reusing the background.gd script to draw a gutter in ControlBlock, define a new script (gutter.gd) specifically for that purpose. In the existing background.gd script, draw a left border which is expected to flow into the gutter if shift_top or shift_bottom is set. https://phabricator.endlessm.com/T35538
1 parent b5d4ab1 commit c92f254

File tree

4 files changed

+70
-17
lines changed

4 files changed

+70
-17
lines changed

addons/block_code/ui/blocks/control_block/control_block.gd

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,10 @@ var snaps: Array
1313
var param_name_input_pairs_array: Array
1414
var param_input_strings_array: Array # Only loaded from serialized
1515

16-
@onready var _background := %Background
17-
1816

1917
func _ready():
2018
super()
2119

22-
_background.color = color
23-
_background.custom_minimum_size.x = Constants.CONTROL_MARGIN
24-
2520
format()
2621

2722
if param_input_strings_array:
@@ -148,9 +143,18 @@ func format():
148143
snap_container.custom_minimum_size.x = 30
149144
snap_container.custom_minimum_size.y = 30
150145
snap_container.size_flags_horizontal = Control.SIZE_SHRINK_BEGIN
151-
snap_container.add_theme_constant_override("margin_left", Constants.CONTROL_MARGIN)
146+
147+
var snap_gutter := Control.new()
148+
snap_gutter.name = "Background"
149+
snap_gutter.set_script(preload("res://addons/block_code/ui/blocks/utilities/background/gutter.gd"))
150+
snap_gutter.custom_minimum_size.x = Constants.CONTROL_MARGIN
151+
snap_gutter.size_flags_horizontal = Control.SIZE_SHRINK_BEGIN
152+
snap_gutter.size_flags_vertical = Control.SIZE_EXPAND_FILL
153+
snap_gutter.color = color
154+
snap_container.add_child(snap_gutter)
152155

153156
var snap_point: SnapPoint = preload("res://addons/block_code/ui/blocks/utilities/snap_point/snap_point.tscn").instantiate()
157+
snap_point.add_theme_constant_override("margin_left", Constants.CONTROL_MARGIN)
154158
snap_container.add_child(snap_point)
155159

156160
snaps.append(snap_point)

addons/block_code/ui/blocks/control_block/control_block.tscn

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,6 @@ mouse_filter = 2
2727
theme_override_constants/margin_top = 30
2828
theme_override_constants/margin_bottom = 30
2929

30-
[node name="Background" type="ColorRect" parent="VBoxContainer/MarginContainer/MarginContainer"]
31-
unique_name_in_owner = true
32-
custom_minimum_size = Vector2(20, 0)
33-
layout_mode = 2
34-
size_flags_horizontal = 0
35-
color = Color(0.59979, 0.536348, 0.876215, 1)
36-
3730
[node name="Rows" type="VBoxContainer" parent="VBoxContainer/MarginContainer"]
3831
unique_name_in_owner = true
3932
layout_mode = 2

addons/block_code/ui/blocks/utilities/background/background.gd

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,14 @@ func _draw():
6060
fill_polygon.append(Vector2(0.0, 0.0))
6161

6262
var stroke_polygon: PackedVector2Array
63-
stroke_polygon.append(Vector2(shift_top, 0.0))
63+
var edge_polygon: PackedVector2Array
64+
var outline_middle = Constants.OUTLINE_WIDTH / 2
65+
66+
if shift_top > 0:
67+
stroke_polygon.append(Vector2(shift_top - outline_middle, 0.0))
68+
else:
69+
stroke_polygon.append(Vector2(shift_top, 0.0))
70+
6471
if show_top:
6572
stroke_polygon.append(Vector2(Constants.KNOB_X + shift_top, 0.0))
6673
stroke_polygon.append(Vector2(Constants.KNOB_X + Constants.KNOB_Z + shift_top, Constants.KNOB_H))
@@ -74,9 +81,21 @@ func _draw():
7481
stroke_polygon.append(Vector2(Constants.KNOB_X + Constants.KNOB_Z + shift_bottom, size.y + Constants.KNOB_H))
7582
stroke_polygon.append(Vector2(Constants.KNOB_X + shift_bottom, size.y))
7683

77-
stroke_polygon.append(Vector2(shift_bottom, size.y))
78-
if shift_top + shift_bottom == 0:
79-
stroke_polygon.append(Vector2(0.0, 0.0))
84+
if shift_bottom > 0:
85+
stroke_polygon.append(Vector2(shift_bottom - outline_middle, size.y))
86+
else:
87+
stroke_polygon.append(Vector2(shift_bottom, size.y))
88+
89+
if shift_top > 0:
90+
edge_polygon.append(Vector2(0.0, 0.0))
91+
else:
92+
edge_polygon.append(Vector2(0.0, 0.0 - outline_middle))
93+
94+
if shift_bottom > 0:
95+
edge_polygon.append(Vector2(0.0, size.y))
96+
else:
97+
edge_polygon.append(Vector2(0.0, size.y + outline_middle))
8098

8199
draw_colored_polygon(fill_polygon, color)
82100
draw_polyline(stroke_polygon, outline_color, Constants.OUTLINE_WIDTH)
101+
draw_polyline(edge_polygon, outline_color, Constants.OUTLINE_WIDTH)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
@tool
2+
extends Control
3+
4+
const Constants = preload("res://addons/block_code/ui/constants.gd")
5+
6+
var outline_color: Color
7+
8+
@export var color: Color:
9+
set = _set_color
10+
11+
12+
func _set_color(new_color):
13+
color = new_color
14+
outline_color = color.darkened(0.2)
15+
queue_redraw()
16+
17+
18+
func _draw():
19+
var fill_polygon: PackedVector2Array
20+
fill_polygon.append(Vector2(0.0, 0.0))
21+
fill_polygon.append(Vector2(size.x, 0.0))
22+
fill_polygon.append(Vector2(size.x, size.y))
23+
fill_polygon.append(Vector2(0.0, size.y))
24+
fill_polygon.append(Vector2(0.0, 0.0))
25+
26+
var left_polygon: PackedVector2Array
27+
var right_polygon: PackedVector2Array
28+
29+
left_polygon.append(Vector2(0.0, 0.0))
30+
left_polygon.append(Vector2(0.0, size.y))
31+
32+
right_polygon.append(Vector2(size.x, 0.0))
33+
right_polygon.append(Vector2(size.x, size.y))
34+
35+
draw_colored_polygon(fill_polygon, color)
36+
draw_polyline(left_polygon, outline_color, Constants.OUTLINE_WIDTH)
37+
draw_polyline(right_polygon, outline_color, Constants.OUTLINE_WIDTH)

0 commit comments

Comments
 (0)