Merge pull request #91112 from RandomShaper/fix_double_confirm
Avoid double handling of rename in the file system dock
This commit is contained in:
commit
316c4d50d5
4 changed files with 20 additions and 6 deletions
|
@ -138,9 +138,7 @@ String FileSystemList::get_edit_text() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileSystemList::_text_editor_popup_modal_close() {
|
void FileSystemList::_text_editor_popup_modal_close() {
|
||||||
if (Input::get_singleton()->is_key_pressed(Key::ESCAPE) ||
|
if (popup_editor->get_hide_reason() == Popup::HIDE_REASON_CANCELED) {
|
||||||
Input::get_singleton()->is_key_pressed(Key::KP_ENTER) ||
|
|
||||||
Input::get_singleton()->is_key_pressed(Key::ENTER)) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,9 @@ void Popup::_notification(int p_what) {
|
||||||
_initialize_visible_parents();
|
_initialize_visible_parents();
|
||||||
} else {
|
} else {
|
||||||
_deinitialize_visible_parents();
|
_deinitialize_visible_parents();
|
||||||
|
if (hide_reason == HIDE_REASON_NONE) {
|
||||||
|
hide_reason = HIDE_REASON_CANCELED;
|
||||||
|
}
|
||||||
emit_signal(SNAME("popup_hide"));
|
emit_signal(SNAME("popup_hide"));
|
||||||
popped_up = false;
|
popped_up = false;
|
||||||
}
|
}
|
||||||
|
@ -87,6 +90,7 @@ void Popup::_notification(int p_what) {
|
||||||
if (!is_in_edited_scene_root()) {
|
if (!is_in_edited_scene_root()) {
|
||||||
if (has_focus()) {
|
if (has_focus()) {
|
||||||
popped_up = true;
|
popped_up = true;
|
||||||
|
hide_reason = HIDE_REASON_NONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
@ -100,6 +104,7 @@ void Popup::_notification(int p_what) {
|
||||||
|
|
||||||
case NOTIFICATION_WM_CLOSE_REQUEST: {
|
case NOTIFICATION_WM_CLOSE_REQUEST: {
|
||||||
if (!is_in_edited_scene_root()) {
|
if (!is_in_edited_scene_root()) {
|
||||||
|
hide_reason = HIDE_REASON_UNFOCUSED;
|
||||||
_close_pressed();
|
_close_pressed();
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
@ -114,6 +119,7 @@ void Popup::_notification(int p_what) {
|
||||||
|
|
||||||
void Popup::_parent_focused() {
|
void Popup::_parent_focused() {
|
||||||
if (popped_up && get_flag(FLAG_POPUP)) {
|
if (popped_up && get_flag(FLAG_POPUP)) {
|
||||||
|
hide_reason = HIDE_REASON_UNFOCUSED;
|
||||||
_close_pressed();
|
_close_pressed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,16 @@ class Popup : public Window {
|
||||||
LocalVector<Window *> visible_parents;
|
LocalVector<Window *> visible_parents;
|
||||||
bool popped_up = false;
|
bool popped_up = false;
|
||||||
|
|
||||||
|
public:
|
||||||
|
enum HideReason {
|
||||||
|
HIDE_REASON_NONE,
|
||||||
|
HIDE_REASON_CANCELED, // E.g., because of rupture of UI flow (app unfocused). Includes closed programmatically.
|
||||||
|
HIDE_REASON_UNFOCUSED, // E.g., user clicked outside.
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
HideReason hide_reason = HIDE_REASON_NONE;
|
||||||
|
|
||||||
void _initialize_visible_parents();
|
void _initialize_visible_parents();
|
||||||
void _deinitialize_visible_parents();
|
void _deinitialize_visible_parents();
|
||||||
|
|
||||||
|
@ -60,6 +70,8 @@ protected:
|
||||||
virtual void _post_popup() override;
|
virtual void _post_popup() override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
HideReason get_hide_reason() const { return hide_reason; }
|
||||||
|
|
||||||
Popup();
|
Popup();
|
||||||
~Popup();
|
~Popup();
|
||||||
};
|
};
|
||||||
|
|
|
@ -3152,9 +3152,7 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, int
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tree::_text_editor_popup_modal_close() {
|
void Tree::_text_editor_popup_modal_close() {
|
||||||
if (Input::get_singleton()->is_key_pressed(Key::ESCAPE) ||
|
if (popup_editor->get_hide_reason() == Popup::HIDE_REASON_CANCELED) {
|
||||||
Input::get_singleton()->is_key_pressed(Key::KP_ENTER) ||
|
|
||||||
Input::get_singleton()->is_key_pressed(Key::ENTER)) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue