diff options
-rw-r--r-- | doc/base/classes.xml | 7 | ||||
-rw-r--r-- | drivers/gles3/rasterizer_scene_gles3.cpp | 2 | ||||
-rw-r--r-- | modules/visual_script/visual_script_builtin_funcs.cpp | 2 | ||||
-rw-r--r-- | scene/gui/tree.cpp | 5 | ||||
-rw-r--r-- | scene/gui/tree.h | 1 | ||||
-rw-r--r-- | scene/main/scene_main_loop.cpp | 5 | ||||
-rw-r--r-- | scene/main/scene_main_loop.h | 1 |
7 files changed, 19 insertions, 4 deletions
diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 4e4fb3cd23..17f45c64a2 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -35451,6 +35451,13 @@ Returns true if this SceneTree's [NetworkedMultiplayerPeer] is in server mode (listening for connections). </description> </method> + <method name="has_network_peer" qualifiers="const"> + <return type="bool"> + </return> + <description> + Returns true if there is a [NetworkedMultiplayerPeer] set (with [method SceneTree.set_network_peer]). + </description> + </method> <method name="is_paused" qualifiers="const"> <return type="bool"> </return> diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index 73adeaf723..03a5834ca7 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -2806,7 +2806,7 @@ void RasterizerSceneGLES3::_copy_to_front_buffer(Environment *env) { //no environment, simply convert from linear to srgb storage->shaders.copy.set_conditional(CopyShaderGLES3::LINEAR_TO_SRGB,true); } else { - /* Why are both statements equal? */ + /* FIXME: Why are both statements equal? */ storage->shaders.copy.set_conditional(CopyShaderGLES3::LINEAR_TO_SRGB,true); } diff --git a/modules/visual_script/visual_script_builtin_funcs.cpp b/modules/visual_script/visual_script_builtin_funcs.cpp index 1acd5bff8d..f9780400d8 100644 --- a/modules/visual_script/visual_script_builtin_funcs.cpp +++ b/modules/visual_script/visual_script_builtin_funcs.cpp @@ -329,7 +329,7 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const case LOGIC_CLAMP: { if (p_idx==0) return PropertyInfo(Variant::REAL,"a"); - else if (p_idx==0) // is it ok to test p_idx == 0 twice? + else if (p_idx==0) // FIXME: is it ok to test p_idx == 0 twice? return PropertyInfo(Variant::REAL,"min"); else return PropertyInfo(Variant::REAL,"max"); diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index cd93c13c99..292efdcc01 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -848,7 +848,6 @@ void Tree::update_cache() { cache.title_button_color = get_color("title_button_color"); v_scroll->set_custom_step(cache.font->get_height()); - cache.click_item=get_selected(); } @@ -1611,6 +1610,7 @@ int Tree::propagate_mouse_event(const Point2i &p_pos,int x_ofs,int y_ofs,bool p_ cache.click_id=c.buttons[j].id; cache.click_item=p_item; cache.click_column=col; + cache.click_pos=get_global_mouse_pos()-get_global_pos(); update(); //emit_signal("button_pressed"); return -1; @@ -2391,6 +2391,8 @@ void Tree::_gui_input(InputEvent p_event) { if (cache.click_type==Cache::CLICK_BUTTON) { + // make sure in case of wrong reference after reconstructing whole TreeItems + cache.click_item=get_item_at_pos(cache.click_pos); emit_signal("button_pressed",cache.click_item,cache.click_column,cache.click_id); } @@ -2971,7 +2973,6 @@ void Tree::clear() { selected_item=NULL; edited_item=NULL; popup_edited_item=NULL; - selected_item=NULL; update(); }; diff --git a/scene/gui/tree.h b/scene/gui/tree.h index 351cc4cb50..14bd2efbaa 100644 --- a/scene/gui/tree.h +++ b/scene/gui/tree.h @@ -409,6 +409,7 @@ friend class TreeItem; TreeItem *click_item; int click_column; int hover_index; + Point2 click_pos; } cache; diff --git a/scene/main/scene_main_loop.cpp b/scene/main/scene_main_loop.cpp index 418eb92ee2..093359ab16 100644 --- a/scene/main/scene_main_loop.cpp +++ b/scene/main/scene_main_loop.cpp @@ -1803,6 +1803,10 @@ bool SceneTree::is_network_server() const { } +bool SceneTree::has_network_peer() const { + return network_peer.is_valid(); +} + int SceneTree::get_network_unique_id() const { ERR_FAIL_COND_V(!network_peer.is_valid(),0); @@ -2310,6 +2314,7 @@ void SceneTree::_bind_methods() { ClassDB::bind_method(D_METHOD("set_network_peer","peer:NetworkedMultiplayerPeer"),&SceneTree::set_network_peer); ClassDB::bind_method(D_METHOD("is_network_server"),&SceneTree::is_network_server); + ClassDB::bind_method(D_METHOD("has_network_peer"),&SceneTree::has_network_peer); ClassDB::bind_method(D_METHOD("get_network_unique_id"),&SceneTree::get_network_unique_id); ClassDB::bind_method(D_METHOD("set_refuse_new_network_connections","refuse"),&SceneTree::set_refuse_new_network_connections); ClassDB::bind_method(D_METHOD("is_refusing_new_network_connections"),&SceneTree::is_refusing_new_network_connections); diff --git a/scene/main/scene_main_loop.h b/scene/main/scene_main_loop.h index fec8534b40..7f69f5eef7 100644 --- a/scene/main/scene_main_loop.h +++ b/scene/main/scene_main_loop.h @@ -447,6 +447,7 @@ public: void set_network_peer(const Ref<NetworkedMultiplayerPeer>& p_network_peer); bool is_network_server() const; + bool has_network_peer() const; int get_network_unique_id() const; void set_refuse_new_network_connections(bool p_refuse); |