Fixed warning at project startup (WIN32)

This commit is contained in:
Yuri Roubinsky 2020-12-11 17:28:46 +03:00
parent 32c06dfc8d
commit 41efbf8cae
2 changed files with 35 additions and 23 deletions

View File

@ -1875,27 +1875,12 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
break;
}
case WM_ACTIVATE: // Watch For Window Activate Message
{
windows[window_id].minimized = HIWORD(wParam) != 0;
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));
}
case WM_ACTIVATE: { // Watch For Window Activate Message
saved_wparam = wParam;
saved_lparam = 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
}
case WM_GETMINMAXINFO: {
@ -1936,6 +1921,9 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
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);
return 0; // Jump Back
@ -2629,6 +2617,28 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
if (!Main::is_iterating()) {
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;
@ -3209,8 +3219,6 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
}
#endif
move_timer_id = 1;
//set_ime_active(false);
if (!OS::get_singleton()->is_in_low_processor_usage_mode()) {

View File

@ -387,7 +387,8 @@ private:
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;
@ -408,6 +409,9 @@ private:
bool in_dispatch_input_event = false;
bool console_visible = false;
WPARAM saved_wparam;
LPARAM saved_lparam;
WNDCLASSEXW wc;
HCURSOR cursors[CURSOR_MAX] = { nullptr };