Here is how I would solve the problem. I'm checking on every mouse exit event if the mouse is still inside the global rectangle of the control node. This will however fail if the Button is directly on the edge of the control nodes rectangle.
Un- checking the "Stop mouse" parameter of the children did not work as far as I can tell.
edit:
"replaced global_mouse_pos with get_tree().get_root().get_mouse_pos()"
extends Control
var mouse_inside = false
func _ready():
connect("mouse_enter",self,"in_")
connect("mouse_exit",self,"out_")
func out_():
if( get_global_rect().has_point( get_tree().get_root().get_mouse_pos() )):
print("mouse over button")
else:
print("mouse outside")
mouse_inside = false
func in_():
mouse_inside = true