Implemented tooltip follows mouse (not perfect).

Fixed bug when using mousewheel action on inventory items.
Added a debug mode for tooltip following mouse
This commit is contained in:
Julian Murgia
2021-02-19 07:53:45 +01:00
parent 52d19c34bd
commit 38f554b496
24 changed files with 421 additions and 174 deletions

View File

@@ -20,7 +20,7 @@ func _ready():
# Add a white TextureRect behind the RTL to see its actual size
var texturerect_node = TextureRect.new()
get_node(path_to_richtextlabel).add_child(texturerect_node)
texturerect_node.texture = load("res://addons/escoria-core/testing/white.png")
texturerect_node.texture = load("res://addons/escoria-core/game/assets/images/white.png")
texturerect_node.expand = true
texturerect_node.stretch_mode = TextureRect.STRETCH_TILE
texturerect_node.size_flags_horizontal = SIZE_EXPAND_FILL
@@ -64,17 +64,17 @@ func _on_new_text_pressed():
emit_signal("text_selected", pressed_button.text)
func tooltip_distance_to_edge_top(position_y):
return position_y
func tooltip_distance_to_edge_top(position : Vector2):
return position.y
func tooltip_distance_to_edge_bottom(position_y):
return screen_height - position_y
func tooltip_distance_to_edge_bottom(position: Vector2):
return screen_height - position.y
func tooltip_distance_to_edge_left(position_x):
return position_x
func tooltip_distance_to_edge_left(position : Vector2):
return position.x
func tooltip_distance_to_edge_right(position_x):
return screen_width - position_x
func tooltip_distance_to_edge_right(position : Vector2):
return screen_width - position.x
func _on_Control_mouse_moved(mouse_pos):
# printt("mousepos", mouse_pos)
@@ -84,19 +84,19 @@ func _on_Control_mouse_moved(mouse_pos):
var corrected_position = mouse_pos
# clamp TOP
if tooltip_distance_to_edge_top(mouse_pos.y) <= global_distance_to_clamp:
if tooltip_distance_to_edge_top(mouse_pos) <= global_distance_to_clamp:
corrected_position.y = global_distance_to_clamp
# clamp BOTTOM
if tooltip_distance_to_edge_bottom(mouse_pos.y + get_node(path_to_richtextlabel).rect_size.y) <= global_distance_to_clamp:
if tooltip_distance_to_edge_bottom(mouse_pos + get_node(path_to_richtextlabel).rect_size) <= global_distance_to_clamp:
corrected_position.y = screen_height - global_distance_to_clamp - get_node(path_to_richtextlabel).rect_size.y
# clamp LEFT
if tooltip_distance_to_edge_left(mouse_pos.x - get_node(path_to_richtextlabel).rect_size.x/2) <= global_distance_to_clamp:
if tooltip_distance_to_edge_left(mouse_pos - get_node(path_to_richtextlabel).rect_size/2) <= global_distance_to_clamp:
corrected_position.x = global_distance_to_clamp
# clamp RIGHT
if tooltip_distance_to_edge_right(mouse_pos.x + get_node(path_to_richtextlabel).rect_size.x/2) <= global_distance_to_clamp:
if tooltip_distance_to_edge_right(mouse_pos + get_node(path_to_richtextlabel).rect_size/2) <= global_distance_to_clamp:
corrected_position.x = screen_width - global_distance_to_clamp - get_node(path_to_richtextlabel).rect_size.x
get_node(path_to_richtextlabel).anchor_right = 0.2
@@ -111,11 +111,6 @@ func _on_clamp_distance_text_changed(new_text):
global_distance_to_clamp = int(new_text)
update_line2d()
func _on_rtl_sizex_text_changed(text):
pass
get_node(path_to_richtextlabel).rect_size.x = float(text)
update_size()
func _offset(position):
var center_offset_x = rect_size.x / 2

View File

@@ -54,7 +54,7 @@ margin_right = 470.0
margin_bottom = 380.0
[node name="foo" type="CheckBox" parent="HBoxContainer2"]
margin_right = 624.0
margin_right = 588.0
margin_bottom = 24.0
pressed = true
group = SubResource( 1 )
@@ -62,14 +62,14 @@ text = "Foo"
[node name="foobar" type="CheckBox" parent="HBoxContainer2"]
margin_top = 28.0
margin_right = 624.0
margin_right = 588.0
margin_bottom = 52.0
group = SubResource( 1 )
text = "Foo bar"
[node name="whatisit" type="CheckBox" parent="HBoxContainer2"]
margin_top = 56.0
margin_right = 624.0
margin_right = 588.0
margin_bottom = 80.0
group = SubResource( 1 )
text = "A super extremely long sentence to test<br>the behaviour of that RichTextLabel node..."
@@ -80,8 +80,8 @@ margin_top = 131.18
margin_right = 638.815
margin_bottom = 231.18
rect_min_size = Vector2( 400, 0 )
bbcode_text = "Tooltip content"
text = "Tooltip content"
bbcode_text = "[center][color=#200606][/color][/center]"
text = "[center][color=#200606][/color][/center]"
[connection signal="mouse_moved" from="." to="." method="_on_Control_mouse_moved"]
[connection signal="text_selected" from="." to="." method="_on_Control_text_selected"]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

View File

@@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/white.png-e746adb12fed1043fc3bcc319345fecb.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/escoria-core/testing/white.png"
dest_files=[ "res://.import/white.png-e746adb12fed1043fc3bcc319345fecb.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0