Fixes node selection, and properly ignore mouse on inner comment node body, closes #6298

This commit is contained in:
Juan Linietsky 2017-08-08 10:57:33 -03:00
parent 51d8206ee8
commit db7f491833
3 changed files with 12 additions and 11 deletions

View file

@ -207,9 +207,10 @@ void GraphEdit::_graph_node_raised(Node *p_gn) {
GraphNode *gn = p_gn->cast_to<GraphNode>();
ERR_FAIL_COND(!gn);
gn->raise();
if (gn->is_comment()) {
move_child(gn, 0);
} else {
gn->raise();
}
int first_not_comment = 0;
for (int i = 0; i < get_child_count(); i++) {
@ -870,21 +871,19 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
if (b->get_button_index() == BUTTON_LEFT && b->is_pressed()) {
GraphNode *gn = NULL;
GraphNode *gn_selected = NULL;
for (int i = get_child_count() - 1; i >= 0; i--) {
gn_selected = get_child(i)->cast_to<GraphNode>();
GraphNode *gn_selected = get_child(i)->cast_to<GraphNode>();
if (gn_selected) {
if (gn_selected->is_resizing())
continue;
Rect2 r = gn_selected->get_rect();
r.size *= zoom;
if (r.has_point(get_local_mouse_pos()))
if (gn_selected->has_point(gn_selected->get_local_mouse_pos())) {
gn = gn_selected;
break;
break;
}
}
}
@ -1225,6 +1224,7 @@ GraphEdit::GraphEdit() {
connections_layer->connect("draw", this, "_connections_layer_draw");
connections_layer->set_name("CLAYER");
connections_layer->set_disable_visibility_clip(true); // so it can draw freely and be offseted
connections_layer->set_mouse_filter(MOUSE_FILTER_IGNORE);
h_scroll = memnew(HScrollBar);
h_scroll->set_name("_h_scroll");

View file

@ -176,6 +176,7 @@ bool GraphNode::has_point(const Point2 &p_point) const {
if (Rect2(get_size() - resizer->get_size(), resizer->get_size()).has_point(p_point)) {
return true;
}
if (Rect2(0, 0, get_size().width, comment->get_margin(MARGIN_TOP)).has_point(p_point)) {
return true;
}
@ -719,7 +720,7 @@ GraphNode::GraphNode() {
overlay = OVERLAY_DISABLED;
show_close = false;
connpos_dirty = true;
set_mouse_filter(MOUSE_FILTER_PASS);
set_mouse_filter(MOUSE_FILTER_STOP);
comment = false;
resizeable = false;
resizing = false;

View file

@ -99,8 +99,6 @@ private:
Overlay overlay;
bool has_point(const Point2 &p_point) const;
protected:
void _gui_input(const Ref<InputEvent> &p_ev);
void _notification(int p_what);
@ -111,6 +109,8 @@ protected:
void _get_property_list(List<PropertyInfo> *p_list) const;
public:
bool has_point(const Point2 &p_point) const;
void set_slot(int p_idx, bool p_enable_left, int p_type_left, const Color &p_color_left, bool p_enable_right, int p_type_right, const Color &p_color_right, const Ref<Texture> &p_custom_left = Ref<Texture>(), const Ref<Texture> &p_custom_right = Ref<Texture>());
void clear_slot(int p_idx);
void clear_all_slots();