Merge pull request #61001 from derammo/derammo_popup_conditional_hide
This commit is contained in:
commit
ccdd85d8e7
@ -356,6 +356,8 @@ void RenameDialog::_update_substitute() {
|
||||
}
|
||||
|
||||
void RenameDialog::_post_popup() {
|
||||
ConfirmationDialog::_post_popup();
|
||||
|
||||
EditorSelection *editor_selection = EditorNode::get_singleton()->get_editor_selection();
|
||||
preview_node = nullptr;
|
||||
|
||||
|
@ -2158,7 +2158,10 @@ void DisplayServerWindows::popup_close(WindowID p_window) {
|
||||
WindowID win_id = E->get();
|
||||
popup_list.erase(E);
|
||||
|
||||
if (win_id != p_window) {
|
||||
// Only request close on related windows, not this window. We are already processing it.
|
||||
_send_window_event(windows[win_id], DisplayServerWindows::WINDOW_EVENT_CLOSE_REQUEST);
|
||||
}
|
||||
E = F;
|
||||
}
|
||||
}
|
||||
@ -2173,6 +2176,7 @@ LRESULT DisplayServerWindows::MouseProc(int code, WPARAM wParam, LPARAM lParam)
|
||||
case WM_NCRBUTTONDOWN:
|
||||
case WM_NCMBUTTONDOWN:
|
||||
case WM_LBUTTONDOWN:
|
||||
case WM_RBUTTONDOWN:
|
||||
case WM_MBUTTONDOWN: {
|
||||
MOUSEHOOKSTRUCT *ms = (MOUSEHOOKSTRUCT *)lParam;
|
||||
Point2i pos = Point2i(ms->pt.x, ms->pt.y);
|
||||
|
@ -108,11 +108,25 @@ void Popup::_close_pressed() {
|
||||
|
||||
_deinitialize_visible_parents();
|
||||
|
||||
call_deferred(SNAME("hide"));
|
||||
// Hide after returning to process events, but only if we don't
|
||||
// get popped up in the interim.
|
||||
call_deferred(SNAME("_popup_conditional_hide"));
|
||||
}
|
||||
|
||||
void Popup::_post_popup() {
|
||||
Window::_post_popup();
|
||||
popped_up = true;
|
||||
}
|
||||
|
||||
void Popup::_popup_conditional_hide() {
|
||||
if (!popped_up) {
|
||||
hide();
|
||||
}
|
||||
}
|
||||
|
||||
void Popup::_bind_methods() {
|
||||
ADD_SIGNAL(MethodInfo("popup_hide"));
|
||||
ClassDB::bind_method(D_METHOD("_popup_conditional_hide"), &Popup::_popup_conditional_hide);
|
||||
}
|
||||
|
||||
Rect2i Popup::_popup_adjust_rect() const {
|
||||
|
@ -57,6 +57,10 @@ protected:
|
||||
void _notification(int p_what);
|
||||
static void _bind_methods();
|
||||
|
||||
void _popup_conditional_hide();
|
||||
|
||||
virtual void _post_popup() override;
|
||||
|
||||
public:
|
||||
Popup();
|
||||
~Popup();
|
||||
|
Loading…
Reference in New Issue
Block a user