Skip to content

Commit

Permalink
Merge pull request #91112 from RandomShaper/fix_double_confirm
Browse files Browse the repository at this point in the history
Avoid double handling of rename in the file system dock
  • Loading branch information
akien-mga committed May 7, 2024
2 parents 594498e + eb2bd41 commit 316c4d5
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 6 deletions.
4 changes: 1 addition & 3 deletions editor/filesystem_dock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,7 @@ String FileSystemList::get_edit_text() {
}

void FileSystemList::_text_editor_popup_modal_close() {
if (Input::get_singleton()->is_key_pressed(Key::ESCAPE) ||
Input::get_singleton()->is_key_pressed(Key::KP_ENTER) ||
Input::get_singleton()->is_key_pressed(Key::ENTER)) {
if (popup_editor->get_hide_reason() == Popup::HIDE_REASON_CANCELED) {
return;
}

Expand Down
6 changes: 6 additions & 0 deletions scene/gui/popup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ void Popup::_notification(int p_what) {
_initialize_visible_parents();
} else {
_deinitialize_visible_parents();
if (hide_reason == HIDE_REASON_NONE) {
hide_reason = HIDE_REASON_CANCELED;
}
emit_signal(SNAME("popup_hide"));
popped_up = false;
}
Expand All @@ -87,6 +90,7 @@ void Popup::_notification(int p_what) {
if (!is_in_edited_scene_root()) {
if (has_focus()) {
popped_up = true;
hide_reason = HIDE_REASON_NONE;
}
}
} break;
Expand All @@ -100,6 +104,7 @@ void Popup::_notification(int p_what) {

case NOTIFICATION_WM_CLOSE_REQUEST: {
if (!is_in_edited_scene_root()) {
hide_reason = HIDE_REASON_UNFOCUSED;
_close_pressed();
}
} break;
Expand All @@ -114,6 +119,7 @@ void Popup::_notification(int p_what) {

void Popup::_parent_focused() {
if (popped_up && get_flag(FLAG_POPUP)) {
hide_reason = HIDE_REASON_UNFOCUSED;
_close_pressed();
}
}
Expand Down
12 changes: 12 additions & 0 deletions scene/gui/popup.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@ class Popup : public Window {
LocalVector<Window *> visible_parents;
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 _deinitialize_visible_parents();

Expand All @@ -60,6 +70,8 @@ class Popup : public Window {
virtual void _post_popup() override;

public:
HideReason get_hide_reason() const { return hide_reason; }

Popup();
~Popup();
};
Expand Down
4 changes: 1 addition & 3 deletions scene/gui/tree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
if (Input::get_singleton()->is_key_pressed(Key::ESCAPE) ||
Input::get_singleton()->is_key_pressed(Key::KP_ENTER) ||
Input::get_singleton()->is_key_pressed(Key::ENTER)) {
if (popup_editor->get_hide_reason() == Popup::HIDE_REASON_CANCELED) {
return;
}

Expand Down

0 comments on commit 316c4d5

Please sign in to comment.