@@ -3152,8 +3152,12 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, int
31523152}
31533153
31543154void Tree::_text_editor_popup_modal_close () {
3155+ if (popup_edit_commited) {
3156+ return ; // Already processed by LineEdit/TextEdit commit.
3157+ }
3158+
31553159 if (popup_editor->get_hide_reason () == Popup::HIDE_REASON_CANCELED) {
3156- return ;
3160+ return ; // ESC pressed, app focus lost, or forced close from code.
31573161 }
31583162
31593163 if (value_editor->has_point (value_editor->get_local_mouse_position ())) {
@@ -3172,9 +3176,18 @@ void Tree::_text_editor_popup_modal_close() {
31723176}
31733177
31743178void Tree::_text_editor_gui_input (const Ref<InputEvent> &p_event) {
3179+ if (popup_edit_commited) {
3180+ return ; // Already processed by _text_editor_popup_modal_close
3181+ }
3182+
3183+ if (popup_editor->get_hide_reason () == Popup::HIDE_REASON_CANCELED) {
3184+ return ; // ESC pressed, app focus lost, or forced close from code.
3185+ }
3186+
31753187 if (p_event->is_action_pressed (" ui_text_newline_blank" , true )) {
31763188 accept_event ();
31773189 } else if (p_event->is_action_pressed (" ui_text_newline" )) {
3190+ popup_edit_commited = true ; // End edit popup processing.
31783191 popup_editor->hide ();
31793192 _apply_multiline_edit ();
31803193 accept_event ();
@@ -3205,6 +3218,15 @@ void Tree::_apply_multiline_edit() {
32053218}
32063219
32073220void Tree::_line_editor_submit (String p_text) {
3221+ if (popup_edit_commited) {
3222+ return ; // Already processed by _text_editor_popup_modal_close
3223+ }
3224+
3225+ if (popup_editor->get_hide_reason () == Popup::HIDE_REASON_CANCELED) {
3226+ return ; // ESC pressed, app focus lost, or forced close from code.
3227+ }
3228+
3229+ popup_edit_commited = true ; // End edit popup processing.
32083230 popup_editor->hide ();
32093231
32103232 if (!popup_edited_item) {
@@ -4072,6 +4094,7 @@ bool Tree::edit_selected(bool p_force_edit) {
40724094 if (!popup_editor->is_embedded ()) {
40734095 popup_editor->set_content_scale_factor (popup_scale);
40744096 }
4097+ popup_edit_commited = false ; // Start edit popup processing.
40754098 popup_editor->popup ();
40764099 popup_editor->child_controls_changed ();
40774100
@@ -4091,6 +4114,7 @@ bool Tree::edit_selected(bool p_force_edit) {
40914114 if (!popup_editor->is_embedded ()) {
40924115 popup_editor->set_content_scale_factor (popup_scale);
40934116 }
4117+ popup_edit_commited = false ; // Start edit popup processing.
40944118 popup_editor->popup ();
40954119 popup_editor->child_controls_changed ();
40964120
0 commit comments