Revert "Fix focusloss of non-exclusive `AcceptDialog` with `close_on_escape`"
This reverts commit 7f547fcf09
.
This commit is contained in:
parent
b7c2fd2e9a
commit
bfa7497c1b
|
@ -44,6 +44,12 @@ void AcceptDialog::_input_from_window(const Ref<InputEvent> &p_event) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AcceptDialog::_parent_focused() {
|
||||||
|
if (close_on_escape && !is_exclusive()) {
|
||||||
|
_cancel_pressed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void AcceptDialog::_update_theme_item_cache() {
|
void AcceptDialog::_update_theme_item_cache() {
|
||||||
Window::_update_theme_item_cache();
|
Window::_update_theme_item_cache();
|
||||||
|
|
||||||
|
@ -64,6 +70,16 @@ void AcceptDialog::_notification(int p_what) {
|
||||||
get_ok_button()->grab_focus();
|
get_ok_button()->grab_focus();
|
||||||
}
|
}
|
||||||
_update_child_rects();
|
_update_child_rects();
|
||||||
|
|
||||||
|
parent_visible = get_parent_visible_window();
|
||||||
|
if (parent_visible) {
|
||||||
|
parent_visible->connect("focus_entered", callable_mp(this, &AcceptDialog::_parent_focused));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (parent_visible) {
|
||||||
|
parent_visible->disconnect("focus_entered", callable_mp(this, &AcceptDialog::_parent_focused));
|
||||||
|
parent_visible = nullptr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
@ -76,9 +92,10 @@ void AcceptDialog::_notification(int p_what) {
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case NOTIFICATION_WM_WINDOW_FOCUS_OUT: {
|
case NOTIFICATION_EXIT_TREE: {
|
||||||
if (close_on_escape && !is_exclusive()) {
|
if (parent_visible) {
|
||||||
_cancel_pressed();
|
parent_visible->disconnect("focus_entered", callable_mp(this, &AcceptDialog::_parent_focused));
|
||||||
|
parent_visible = nullptr;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
@ -112,9 +129,21 @@ void AcceptDialog::_ok_pressed() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void AcceptDialog::_cancel_pressed() {
|
void AcceptDialog::_cancel_pressed() {
|
||||||
|
Window *parent_window = parent_visible;
|
||||||
|
if (parent_visible) {
|
||||||
|
parent_visible->disconnect("focus_entered", callable_mp(this, &AcceptDialog::_parent_focused));
|
||||||
|
parent_visible = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
call_deferred(SNAME("hide"));
|
call_deferred(SNAME("hide"));
|
||||||
|
|
||||||
emit_signal(SNAME("canceled"));
|
emit_signal(SNAME("canceled"));
|
||||||
|
|
||||||
cancel_pressed();
|
cancel_pressed();
|
||||||
|
|
||||||
|
if (parent_window) {
|
||||||
|
//parent_window->grab_focus();
|
||||||
|
}
|
||||||
set_input_as_handled();
|
set_input_as_handled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,8 @@ class LineEdit;
|
||||||
class AcceptDialog : public Window {
|
class AcceptDialog : public Window {
|
||||||
GDCLASS(AcceptDialog, Window);
|
GDCLASS(AcceptDialog, Window);
|
||||||
|
|
||||||
|
Window *parent_visible = nullptr;
|
||||||
|
|
||||||
Panel *bg_panel = nullptr;
|
Panel *bg_panel = nullptr;
|
||||||
Label *message_label = nullptr;
|
Label *message_label = nullptr;
|
||||||
HBoxContainer *buttons_hbox = nullptr;
|
HBoxContainer *buttons_hbox = nullptr;
|
||||||
|
@ -63,6 +65,7 @@ class AcceptDialog : public Window {
|
||||||
static bool swap_cancel_ok;
|
static bool swap_cancel_ok;
|
||||||
|
|
||||||
void _input_from_window(const Ref<InputEvent> &p_event);
|
void _input_from_window(const Ref<InputEvent> &p_event);
|
||||||
|
void _parent_focused();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual Size2 _get_contents_minimum_size() const override;
|
virtual Size2 _get_contents_minimum_size() const override;
|
||||||
|
|
Loading…
Reference in New Issue