Skip to content

Commit

Permalink
Fixes node selection, and properly ignore mouse on inner comment node…
Browse files Browse the repository at this point in the history
… body, closes #6298
  • Loading branch information
reduz committed Aug 8, 2017
1 parent 51d8206 commit db7f491
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 11 deletions.
16 changes: 8 additions & 8 deletions scene/gui/graph_edit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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++) {
Expand Down Expand Up @@ -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;
}
}
}

Expand Down Expand Up @@ -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");
Expand Down
3 changes: 2 additions & 1 deletion scene/gui/graph_node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions scene/gui/graph_node.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,6 @@ class GraphNode : public Container {

Overlay overlay;

bool has_point(const Point2 &p_point) const;

protected:
void _gui_input(const Ref<InputEvent> &p_ev);
void _notification(int p_what);
Expand All @@ -111,6 +109,8 @@ class GraphNode : public Container {
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();
Expand Down

0 comments on commit db7f491

Please sign in to comment.