Merge pull request #44299 from Chaosus/fix_win32_warning
Fixed warning at window closing (WIN32)
This commit is contained in:
@ -1876,27 +1876,12 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WM_ACTIVATE: // Watch For Window Activate Message
|
case WM_ACTIVATE: { // Watch For Window Activate Message
|
||||||
{
|
saved_wparam = wParam;
|
||||||
windows[window_id].minimized = HIWORD(wParam) != 0;
|
saved_lparam = lParam;
|
||||||
|
|
||||||
if (LOWORD(wParam) == WA_ACTIVE || LOWORD(wParam) == WA_CLICKACTIVE) {
|
|
||||||
_send_window_event(windows[window_id], WINDOW_EVENT_FOCUS_IN);
|
|
||||||
windows[window_id].window_focused = true;
|
|
||||||
alt_mem = false;
|
|
||||||
control_mem = false;
|
|
||||||
shift_mem = false;
|
|
||||||
} else { // WM_INACTIVE
|
|
||||||
Input::get_singleton()->release_pressed_events();
|
|
||||||
_send_window_event(windows[window_id], WINDOW_EVENT_FOCUS_OUT);
|
|
||||||
windows[window_id].window_focused = false;
|
|
||||||
alt_mem = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
if ((OS::get_singleton()->get_current_tablet_driver() == "wintab") && wintab_available && windows[window_id].wtctx) {
|
|
||||||
wintab_WTEnable(windows[window_id].wtctx, GET_WM_ACTIVATE_STATE(wParam, lParam));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Run a timer to prevent event catching warning if the window is closing.
|
||||||
|
focus_timer_id = SetTimer(windows[window_id].hWnd, 2, USER_TIMER_MINIMUM, (TIMERPROC) nullptr);
|
||||||
return 0; // Return To The Message Loop
|
return 0; // Return To The Message Loop
|
||||||
}
|
}
|
||||||
case WM_GETMINMAXINFO: {
|
case WM_GETMINMAXINFO: {
|
||||||
@ -1937,6 +1922,9 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
|||||||
|
|
||||||
case WM_CLOSE: // Did We Receive A Close Message?
|
case WM_CLOSE: // Did We Receive A Close Message?
|
||||||
{
|
{
|
||||||
|
if (focus_timer_id != 0U) {
|
||||||
|
KillTimer(windows[window_id].hWnd, focus_timer_id);
|
||||||
|
}
|
||||||
_send_window_event(windows[window_id], WINDOW_EVENT_CLOSE_REQUEST);
|
_send_window_event(windows[window_id], WINDOW_EVENT_CLOSE_REQUEST);
|
||||||
|
|
||||||
return 0; // Jump Back
|
return 0; // Jump Back
|
||||||
@ -2630,6 +2618,28 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
|||||||
if (!Main::is_iterating()) {
|
if (!Main::is_iterating()) {
|
||||||
Main::iteration();
|
Main::iteration();
|
||||||
}
|
}
|
||||||
|
} else if (wParam == focus_timer_id) {
|
||||||
|
windows[window_id].minimized = HIWORD(saved_wparam) != 0;
|
||||||
|
|
||||||
|
if (LOWORD(saved_wparam) == WA_ACTIVE || LOWORD(saved_wparam) == WA_CLICKACTIVE) {
|
||||||
|
_send_window_event(windows[window_id], WINDOW_EVENT_FOCUS_IN);
|
||||||
|
windows[window_id].window_focused = true;
|
||||||
|
alt_mem = false;
|
||||||
|
control_mem = false;
|
||||||
|
shift_mem = false;
|
||||||
|
} else { // WM_INACTIVE
|
||||||
|
Input::get_singleton()->release_pressed_events();
|
||||||
|
_send_window_event(windows[window_id], WINDOW_EVENT_FOCUS_OUT);
|
||||||
|
windows[window_id].window_focused = false;
|
||||||
|
alt_mem = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
if ((OS::get_singleton()->get_current_tablet_driver() == "wintab") && wintab_available && windows[window_id].wtctx) {
|
||||||
|
wintab_WTEnable(windows[window_id].wtctx, GET_WM_ACTIVATE_STATE(saved_wparam, saved_lparam));
|
||||||
|
}
|
||||||
|
|
||||||
|
KillTimer(windows[window_id].hWnd, focus_timer_id);
|
||||||
|
focus_timer_id = 0U;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
@ -3213,8 +3223,6 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
move_timer_id = 1;
|
|
||||||
|
|
||||||
//set_ime_active(false);
|
//set_ime_active(false);
|
||||||
|
|
||||||
if (!OS::get_singleton()->is_in_low_processor_usage_mode()) {
|
if (!OS::get_singleton()->is_in_low_processor_usage_mode()) {
|
||||||
|
|||||||
@ -387,7 +387,8 @@ private:
|
|||||||
|
|
||||||
WindowID last_focused_window = INVALID_WINDOW_ID;
|
WindowID last_focused_window = INVALID_WINDOW_ID;
|
||||||
|
|
||||||
uint32_t move_timer_id;
|
uint32_t move_timer_id = 0U;
|
||||||
|
uint32_t focus_timer_id = 0U;
|
||||||
|
|
||||||
HCURSOR hCursor;
|
HCURSOR hCursor;
|
||||||
|
|
||||||
@ -408,6 +409,9 @@ private:
|
|||||||
bool in_dispatch_input_event = false;
|
bool in_dispatch_input_event = false;
|
||||||
bool console_visible = false;
|
bool console_visible = false;
|
||||||
|
|
||||||
|
WPARAM saved_wparam;
|
||||||
|
LPARAM saved_lparam;
|
||||||
|
|
||||||
WNDCLASSEXW wc;
|
WNDCLASSEXW wc;
|
||||||
|
|
||||||
HCURSOR cursors[CURSOR_MAX] = { nullptr };
|
HCURSOR cursors[CURSOR_MAX] = { nullptr };
|
||||||
|
|||||||
Reference in New Issue
Block a user