diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2016-01-21 19:33:50 +0100 |
---|---|---|
committer | Rémi Verschelde <remi@verschelde.fr> | 2016-01-21 19:33:50 +0100 |
commit | 23be1d8639898ef887ba819db5c1749caa47e37f (patch) | |
tree | c06f3ef56b01d9f69958c092a1175f7194779a9f /scene/gui/tree.cpp | |
parent | 68cc789c2a186e7e167a5c20c16f6743f2839bb3 (diff) | |
parent | 06cafeac0a15051e1ba2733989f0a70ae59d496f (diff) | |
download | redot-engine-23be1d8639898ef887ba819db5c1749caa47e37f.tar.gz |
Merge pull request #3407 from TheHX/pr-issue-1717
Tree and PropertyEditor confirm value change on focus loss
Diffstat (limited to 'scene/gui/tree.cpp')
-rw-r--r-- | scene/gui/tree.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index e6f09ece94..66ce117c9d 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -1723,6 +1723,7 @@ int Tree::propagate_mouse_event(const Point2i &p_pos,int x_ofs,int y_ofs,bool p_ void Tree::text_editor_enter(String p_text) { + text_changed=false; text_editor->hide(); value_editor->hide(); @@ -1761,6 +1762,22 @@ void Tree::text_editor_enter(String p_text) { } +void Tree::text_editor_changed(String p_text) { + + text_changed=true; +} + +void Tree::text_editor_hide() { + + if (!text_changed) + return; + + if (Input::get_singleton()->is_key_pressed(KEY_ESCAPE)) + return; + + text_editor_enter(text_editor->get_text()); +} + void Tree::value_editor_changed(double p_value) { if (updating_value_editor) { @@ -2350,6 +2367,8 @@ bool Tree::edit_selected() { } else if (c.mode==TreeItem::CELL_MODE_STRING || c.mode==TreeItem::CELL_MODE_RANGE) { + text_changed=false; + Point2i textedpos=get_global_pos() + rect.pos; text_editor->set_pos( textedpos ); text_editor->set_size( rect.size); @@ -3185,6 +3204,8 @@ void Tree::_bind_methods() { ObjectTypeDB::bind_method(_MD("_input_event"),&Tree::_input_event); ObjectTypeDB::bind_method(_MD("_popup_select"),&Tree::popup_select); ObjectTypeDB::bind_method(_MD("_text_editor_enter"),&Tree::text_editor_enter); + ObjectTypeDB::bind_method(_MD("_text_editor_changed"),&Tree::text_editor_changed); + ObjectTypeDB::bind_method(_MD("_text_editor_hide"),&Tree::text_editor_hide); ObjectTypeDB::bind_method(_MD("_value_editor_changed"),&Tree::value_editor_changed); ObjectTypeDB::bind_method(_MD("_scroll_moved"),&Tree::_scroll_moved); @@ -3283,6 +3304,8 @@ Tree::Tree() { h_scroll->connect("value_changed", this,"_scroll_moved"); v_scroll->connect("value_changed", this,"_scroll_moved"); text_editor->connect("text_entered", this,"_text_editor_enter"); + text_editor->connect("text_changed",this,"_text_editor_changed"); + text_editor->connect("hide",this,"_text_editor_hide"); popup_menu->connect("item_pressed", this,"_popup_select"); value_editor->connect("value_changed", this,"_value_editor_changed"); @@ -3316,6 +3339,8 @@ Tree::Tree() { hide_folding=false; + text_changed=false; + } |