diff options
Diffstat (limited to 'scene/gui/graph_node.cpp')
| -rw-r--r-- | scene/gui/graph_node.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/scene/gui/graph_node.cpp b/scene/gui/graph_node.cpp index afbb0bbad7..b9062295b5 100644 --- a/scene/gui/graph_node.cpp +++ b/scene/gui/graph_node.cpp @@ -6,6 +6,7 @@ /* http://www.godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md) */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -27,7 +28,7 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ #include "graph_node.h" -#include "method_bind_ext.inc" +#include "method_bind_ext.gen.inc" bool GraphNode::_set(const StringName &p_name, const Variant &p_value) { @@ -175,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; } @@ -238,7 +240,7 @@ void GraphNode::_notification(int p_what) { if (show_close) { Vector2 cpos = Point2(w + sb->get_margin(MARGIN_LEFT), -close->get_height() + close_offset); draw_texture(close, cpos); - close_rect.pos = cpos; + close_rect.position = cpos; close_rect.size = close->get_size(); } else { close_rect = Rect2(); @@ -573,18 +575,17 @@ Color GraphNode::get_connection_output_color(int p_idx) { return conn_output_cache[p_idx].color; } -void GraphNode::_gui_input(const InputEvent &p_ev) { +void GraphNode::_gui_input(const Ref<InputEvent> &p_ev) { - if (p_ev.type == InputEvent::MOUSE_BUTTON) { + Ref<InputEventMouseButton> mb = p_ev; + if (mb.is_valid()) { ERR_EXPLAIN("GraphNode must be the child of a GraphEdit node."); ERR_FAIL_COND(get_parent_control() == NULL); - print_line("INPUT EVENT BUTTON"); - - if (p_ev.mouse_button.pressed && p_ev.mouse_button.button_index == BUTTON_LEFT) { + if (mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) { - Vector2 mpos = Vector2(p_ev.mouse_button.x, p_ev.mouse_button.y); + Vector2 mpos = Vector2(mb->get_position().x, mb->get_position().y); if (close_rect.size != Size2() && close_rect.has_point(mpos)) { emit_signal("close_request"); accept_event(); @@ -607,13 +608,14 @@ void GraphNode::_gui_input(const InputEvent &p_ev) { get_parent_control()->grab_focus(); } - if (!p_ev.mouse_button.pressed && p_ev.mouse_button.button_index == BUTTON_LEFT) { + if (!mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) { resizing = false; } } - if (resizing && p_ev.type == InputEvent::MOUSE_MOTION) { - Vector2 mpos = Vector2(p_ev.mouse_motion.x, p_ev.mouse_motion.y); + Ref<InputEventMouseMotion> mm = p_ev; + if (resizing && mm.is_valid()) { + Vector2 mpos = mm->get_position(); Vector2 diff = mpos - resizing_from; @@ -662,7 +664,7 @@ void GraphNode::_bind_methods() { ClassDB::bind_method(D_METHOD("set_slot", "idx", "enable_left", "type_left", "color_left", "enable_right", "type_right", "color_right", "custom_left", "custom_right"), &GraphNode::set_slot, DEFVAL(Ref<Texture>()), DEFVAL(Ref<Texture>())); ClassDB::bind_method(D_METHOD("clear_slot", "idx"), &GraphNode::clear_slot); - ClassDB::bind_method(D_METHOD("clear_all_slots", "idx"), &GraphNode::clear_all_slots); + ClassDB::bind_method(D_METHOD("clear_all_slots"), &GraphNode::clear_all_slots); ClassDB::bind_method(D_METHOD("is_slot_enabled_left", "idx"), &GraphNode::is_slot_enabled_left); ClassDB::bind_method(D_METHOD("get_slot_type_left", "idx"), &GraphNode::get_slot_type_left); ClassDB::bind_method(D_METHOD("get_slot_color_left", "idx"), &GraphNode::get_slot_color_left); @@ -718,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; |